gpt4 book ai didi

python - 在 float 0.01 上使用 struct pack 和 unpack 输出 0.009999999776482582。

转载 作者:行者123 更新时间:2023-11-28 22:34:12 25 4
gpt4 key购买 nike

在 float 0.01 上使用“struct pack and unpack”输出 0.009999999776482582。对于我的项目,我必须配置 float 值并且同样需要存储在二进制文件中,我需要这些数据稍后进行分析,我需要配置的确切值。

如果有任何方法可以存储精确值 0.01 并检索相同值,有人可以帮助我吗?

根据我已经尝试使用 double 而不是 float 的一些帖子,它可以工作,但使用 double 的问题是我的文件大小增加了。我有很多浮点参数,可以取 0 到 5 之间的任何值。因此,任何其他建议将不胜感激。

这是示例代码

import struct
a = 0.01
b = struct.pack('<f', a)
c = struct.unpack('<f', b)
print c
(0.009999999776482582,)

最佳答案

没有 float 0.01。 IEEE float 不代表整个实数行;它们表示使用特定二进制方案的近似值。最接近的近似值的十进制表示为 0.009999999776482582。

您可以尝试序列化文本表示(例如 json)或 pickle 可以表示任意精度的 BigDecimal。

关于python - 在 float 0.01 上使用 struct pack 和 unpack 输出 0.009999999776482582。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39233151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com