我有一个 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
。是什么原因造成的?
答案 0 :(得分:2)
对于典型的用例,例如算术运算的结果,您不能比较 equality due to rounding errors 的浮点数。
而是检查两个数字是否非常接近。请参阅 this 了解替代方案。