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 MATLAB运行显示错误,如何解决?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 UE5#if WITH_EDITOR导致打包的功能不可用
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题
  • ¥20 yolov5自定义Prune报错,如何解决?
  • ¥15 电磁场的matlab仿真
  • ¥15 mars2d在vue3中的引入问题
  • ¥50 h5唤醒支付宝并跳转至向小荷包转账界面
  • ¥15 算法题:数的划分,用记忆化DFS做WA求调