看问题Python: convert 2 ints to 32 float它表明两个整数可以转换为浮点数。给出的解决方案是:
from struct import pack, unpack
f = unpack('>f',pack('>HH',i1,i2))[0]
在评论中指出,这不适用于所有情况。我需要集成一种将两个整数转换为浮点数的方法以用于生产代码,因此必须考虑所有情况。有没有更好的方法来实现这一目标?
看问题Python: convert 2 ints to 32 float它表明两个整数可以转换为浮点数。给出的解决方案是:
from struct import pack, unpack
f = unpack('>f',pack('>HH',i1,i2))[0]
在评论中指出,这不适用于所有情况。我需要集成一种将两个整数转换为浮点数的方法以用于生产代码,因此必须考虑所有情况。有没有更好的方法来实现这一目标?
对该答案的评论中的警告仅适用于反向操作。
对于所有无符号的 16 位整数i1
和i2
,打包到字节然后解包为浮点数将毫无问题地工作。
如果您有时间,您可以自己验证所有 4294+ 百万个组合:
from struct import pack, unpack
for i1, i2 in product(xrange(2**16), repeat=2):
try:
f = unpack('>f', pack('>HH', i1, i2))
except Exception:
print 'Fails for {}, {}'.format(i1, i2)
或者,相信我的话。