值正如我們所知,由於數字的二進制表示,該表達式的計算結果爲False
(至少在Python):使用math.isclose功能與接近0
0.2 + 0.4 == 0.6
爲了能夠檢查數值誤差範圍內的平等,模塊math
提供isclose
:
import math
math.isclose(0.2 + 0.4 , 0.6)
這最後一個表達式產生True
預期。
現在爲什麼下面的表達式再次是False
?
math.isclose(0.2 + 0.4 - 0.6 , 0.0)
看來,一切都比較0.0
是False
math.isclose(1.0e-100 , 0.0)
mmph。我確實閱讀了文檔,並指出我可以設置相對和絕對容差。但我不知何故錯過了默認的絕對容差爲0.0。也許我應該去睡覺......謝謝大衛 – steffen
爲了完整性,[原始PEP](https://www.python.org/dev/peps/pep-0485/#absolute-tolerance-default)解釋了爲什麼絕對公差爲0:*「確定值是否」接近「爲零所需的絕對容差完全取決於用例。」* –