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

关于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+...之类的,反正不可能是整的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器