This question already has answers here:
Floating point precision while using Python's max()
                                
                                    (4个答案)
                                
                        
                                5年前关闭。
            
                    
我无法理解以下内容

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
如印刷。

谢谢

最佳答案

当在函数中使用浮点值时,永远不要指望100%相等,也不要用于表示。

您可以使用double来获得更好的准确性,否则必须考虑max。要依靠的位数(例如,浮点数约为8,不确定其取决于的位数)。

当检查两个浮点数(或在函数/计算中使用相同的浮点数)时,请始终留有余量。

08-19 22:33