由於硬件和內存的限制,我們遇到了浮點問題。我的問題是,如何在Python中:0.1 + 0.1 + 0.1 == 0.3
返回False
,而Mathematica返回它True
?Python和Mathematica中的浮點數
Wolfram是如何管理它的工作的,Python開發人員可以實現他們的解決方案嗎?
由於硬件和內存的限制,我們遇到了浮點問題。我的問題是,如何在Python中:0.1 + 0.1 + 0.1 == 0.3
返回False
,而Mathematica返回它True
?Python和Mathematica中的浮點數
Wolfram是如何管理它的工作的,Python開發人員可以實現他們的解決方案嗎?
從鎢文檔在https://reference.wolfram.com/language/ref/Equal.html
與機器精度或更高近似數,如果它們至多過去七年二進制數字(大約他們的最後兩位數字)的不同之處被認爲是相等的。
所以這只是==
比較的不同規則。
如果您在Python中需要精確的浮點精度,請查看['decimal'](https://docs.python.org/3/library/decimal.html)模塊。 – MattDMo
這是另一種方式。 Wolfram產品近似於結果。 Python正在做正確的事情。而且您不應該執行此類檢查或將其明確化,例如,請參閱https://www.python.org/dev/peps/pep-0485/ – percusse
感謝您提供豐富的意見。 – KitKat