frangipane
2018-10-02 09:34
采纳率: 100%
浏览 916

关于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)

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • JonathanYan 2018-10-02 10:39
    已采纳

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

    点赞 打赏 评论
  • blownewbee 2018-10-02 12:01

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

    点赞 打赏 评论

相关推荐 更多相似问题