关于python里面二进制读写的精度问题。

图片说明

            请问大家我的代码里面 写入的数值是23.45,为什么输出的会是23.450000762939453呀
            下面是代码:
import struct
a = 23.45
bytes = struct.pack('f',a)
file = open('1234','wb')
file.write(bytes)
file.close()
file = open('1234','rb')
bytes = file.read()
a,= struct.unpack('f',bytes)
print(a)

你去查查浮点数是怎么存的就知道了,一般都是取近似,因为要把23.45转化成二进制下的浮点数,所以小数位不可能完全相同。
比如0.5在二进制里是0.1
0.25是0.01
0.7是0.5 + 0.125+...之类的,反正不可能是整的。

你用f是单精度浮点,有效精度是10的–6次方。和你结果基本是符合的。你要提高精度可以用双精度。是lf