Wil*_*tor 6 python file-io struct binaryfiles
在进行二进制文件写入时,我在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()
Run Code Online (Sandbox Code Playgroud)
我得到的结果如下:
(1.2345600128173828,)
Run Code Online (Sandbox Code Playgroud)
附加数字是怎么回事?这是一个舍入误差吗?这是如何运作的?
在大多数平台上,Python浮点数是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,)
Run Code Online (Sandbox Code Playgroud)
该float结构格式只提供单精度(为显著精度24位).
| 归档时间: |
|
| 查看次数: |
15160 次 |
| 最近记录: |