gpt4 book ai didi

python - 在 python 中打包和解包二进制 float

转载 作者:太空狗 更新时间:2023-10-29 22:31:09 24 4
gpt4 key购买 nike

在写入二进制文件时,我在 python 中打包和解包二进制 float 时遇到了一些问题。这是我所做的:

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,)

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

最佳答案

在大多数平台上,Python float 是 C 语言中的 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 结构格式仅提供 single precision (24 bits for the significant precision)

关于python - 在 python 中打包和解包二进制 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16165488/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com