在 Python 中比較浮點數與精確度
在程式設計領域,比較浮點數是否相等有挑戰。正如 Bruce Dawson 等專家所強調的那樣,由於舍入誤差和精度限制,確定相等性變得複雜。
Python 中有解決方案嗎?
Python 提供了無數的解決方案對於這個問題。值得注意的是,Python 3.5 遵循 PEP 485 的指導引入了 math.isclose 和 cmath.isclose 函數。這些函數提供了一種比較浮點數近似相等的可靠方法。
實現詳細資訊:
import math # Compare two floating-point numbers for almost-equality result = math.isclose(0.1, 0.10000000000000001, rel_tol=1e-09, abs_tol=0.0)
早期 Python 的自訂函數版本:
對於 3.5 之前的 Python.5 之前的 Python.5版本,文件建議使用以下自訂函數:
def isclose(a, b, rel_tol=1e-09, abs_tol=0.0): return abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol)
參數解釋:
使用 math.isclose 函數或自訂函數確保比較準確浮點數的近似相等,解決精確度問題帶來的挑戰。
以上是如何在Python中準確比較浮點數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!