比较 Python 中的浮点数给出错误的结果

时间:2021-04-24 17:39:06

标签: python

我有一个 Python 脚本,可将测量值保存在 csv 文件中。然后我将 csv 读入另一个 Python 脚本,该脚本检查结果总和是否为 1.0。我注意到我的比较脚本经常返回 false,即使我执行 print(my_sum),打印的结果也是 1.0。类似地,使用 excel 对值求和得到正好 1.0

这是我的示例值:

x = 0.926119895097366
y = 0.0248330035844995
z = 0.0490471013181347

检查 if (x+y+z) == 1.0 失败。但是,当我执行 print(x+y+z) 时,打印的值是 1.0。同样,使用 excel 对这些值求和得到 1.0。但是,当我在 Ipython 中运行求和时,结果是 1.0000000000000002。是什么原因造成的?

1 个答案:

答案 0 :(得分:2)

对于典型的用例,例如算术运算的结果,您不能比较 equality due to rounding errors 的浮点数。

而是检查两个数字是否非常接近。请参阅 this 了解替代方案。

相关问题