python中float的奇怪问题

时间:2014-07-03 14:43:06

标签: python floating-point

我无法理解以下

if cell_val==10013.32945086 :
    print cell_val
    print str(cell_val)
    print repr(cell_val)

上面的代码片段是for循环的一部分,结果如下所示:

10013.3294509
10013.3294509
10013.329450859999
10013.3294509
10013.3294509
10013.329450859999

在上面的cell_val等于10013.32945086但实际上持有10013.3294509 正如印刷的那样。

由于

1 个答案:

答案 0 :(得分:1)

在函数中使用浮点值时,不应期望浮点值100%相等,也不能用于表示。

您可以使用双精度来获得更好的准确性,否则您必须考虑最大值。要依赖的位数(例如浮点数约为8,不确定它取决于何处)。

检查两个浮点数(或在函数/计算中使用它后相同)时,请务必检查边距。