ast*_*rog 10 python floating-point ieee-754
说我有两个Python花车a
和b
,有一种简单的方法来找出多少表现的实数是IEEE-754表示两个(或任何代表使用的机器使用)之间?
Mat*_*gro 12
AFAIK,IEEE754浮标有一个有趣的属性.如果你有浮动f,那么
(*(int*)&f + 1)
Run Code Online (Sandbox Code Playgroud)
在某些条件下,是下一个可表示的浮点数.因此对于花车a和b
*(int*)&a - *(int*)&b
Run Code Online (Sandbox Code Playgroud)
将为您提供这些数字之间的浮点数.
有关更多信息,请参见http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm.
jsb*_*eno 10
我不知道你将使用它 - 但是,如果两个浮点数具有相同的指数,它应该是可能的.由于指数保持在高位上,因此将浮点字节(在本例中为8个字节)作为整数加载并从另一个中减去一个应该得到您想要的数字.我使用struct模型将浮点数打包为二进制表示,然后将它们解压缩为(C,8字节)长整数:
>>> import struct
>>> a = struct.pack("dd", 1.000000,1.000001)
>>> b = struct.unpack("ll",a)
>>> b[1] - b[0]
4503599627
>>> a = struct.pack("dd", 1.000000000,1.000000001)
>>> b = struct.unpack("ll",a)
>>> b[1] - b[0]
4503600
>>>
Run Code Online (Sandbox Code Playgroud)