netch80: (Default)
[personal profile] netch80
4> <<P:32/big-float>> = <<63,128,0,0>>.
<<63,128,0,0>>
5> P.
1.0
6> <<P:32/big-float>> = <<127,128,0,0>>.
** exception error: no match of right hand side value <<127,128,0,0>>
7> <<P:32/big-float>> = <<127,128,0,1>>.
** exception error: no match of right hand side value <<127,128,0,1>>

в команде 6 я пытался расшифровать +INF, 7 - +NAN(1)

А вот что пишет ползучий питоний:

>>> struct.unpack('>f', '\x7f\x8f\x00\x00')[0]
nan
>>> struct.unpack('>f', '\xff\x8f\x00\xff')[0]
nan

"это не число, и к дьяволу подробности!"
Зато хоть создавать не запрещает:

>>> a = float('nan')
>>> a
nan
>>> -a
nan

и на том спасибо.

Date: 2009-05-08 05:49 am (UTC)
ext_605364: geg MOPO4 (Default)
From: [identity profile] gegmopo4.livejournal.com
Это зависит от реализации. Даже в CPython float('nan') и float('inf') работают только если нижележащая библиотека C поддерживает.

Date: 2009-05-08 11:10 am (UTC)
netch: (Default)
From: [personal profile] netch
> только если нижележащая библиотека C поддерживает.

А какая именно поддержка нужна для этого?

Date: 2009-05-08 12:32 pm (UTC)
ext_605364: geg MOPO4 (Default)
From: [identity profile] gegmopo4.livejournal.com
Ну, наверное существование таких нечисел, как NAN и INFINITY, функции вроде isnan()/nan(), а может и бинарной совместимости с соответствующим IEEE. Сам питон не гарантирует их существования. На какой-то экзотической платформе может не быть.

И в 2.4 pack/unpack с ними не работал.

Date: 2009-05-08 01:53 pm (UTC)
netch: (Default)
From: [personal profile] netch
Мне что-то кажется, что результат зависит от того, что покажет sscanf("nan", "%lg", &d)
;)

Date: 2009-05-08 04:06 pm (UTC)
ext_605364: geg MOPO4 (Default)
From: [identity profile] gegmopo4.livejournal.com
Надо же, не знал, что scanf понимает nan. Но я с нечислами вообще дела не имел.

Тогда уж strtod, именно он используется для str->float.

Date: 2009-05-08 04:12 pm (UTC)
ext_605364: geg MOPO4 (Default)
From: [identity profile] gegmopo4.livejournal.com
А в struct и pickle вообще используется ручная платформо-независимая упаковка в 4/8 байт. И получатся ли нечисла на не-IEEE платформе зависит от везения.

Profile

netch80: (Default)
netch80

January 2026

S M T W T F S
    1 23
45678910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 2nd, 2026 06:07 pm
Powered by Dreamwidth Studios