0

看问题Python: convert 2 ints to 32 float它表明两个整数可以转换为浮点数。给出的解决方案是:

from struct import pack, unpack
f = unpack('>f',pack('>HH',i1,i2))[0]

在评论中指出,这不适用于所有情况。我需要集成一种将两个整数转换为浮点数的方法以用于生产代码,因此必须考虑所有情况。有没有更好的方法来实现这一目标?

4

1 回答 1

1

对该答案的评论中的警告适用于反向操作。

对于所有无符号的 16 位整数i1i2,打包到字节然后解包为浮点数将毫无问题地工作。

如果您有时间,您可以自己验证所有 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)

或者,相信我的话。

于 2013-10-21T16:40:05.073 回答