微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在python中打包二进制浮点数

如何解决在python中打包二进制浮点数

在大多数平台上,Python浮点数就是C所称的a double,但是您将数据写出来了,但是float精度却只有一半。

如果要使用double,则精度损失会更少:

>>> data = struct.pack('d',value)
>>> struct.unpack('d',data)
(1.23456,)
>>> data = struct.pack('f',value)
>>> struct.unpack('f',data)
(1.2345600128173828,)

float结构形式报价仅单精度(为显著精度24位)

解决方法

在执行二进制文件写入时,我在打包和解包python中的二进制浮点数时遇到了一些麻烦。这是我所做的:

import struct

f = open('file.bin','wb')
value = 1.23456
data = struct.pack('f',value)
f.write(data)
f.close()

f = open('file.bin','rb')
print struct.unpack('f',f.read(4))
f.close()

我得到的结果如下:

(1.2345600128173828,)

多余的数字怎么回事?这是舍入错误吗?这是如何运作的?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。