首頁 >後端開發 >Python教學 >如何在Python中準確比較浮點數?

如何在Python中準確比較浮點數?

Susan Sarandon
Susan Sarandon原創
2024-12-26 19:39:18566瀏覽

How Can I Accurately Compare Floating-Point Numbers in Python?

在 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)

參數解釋:

  • rel_tol:定義相對容差,根據值的大小調整可接受的差異比較。
  • abs_tol:指定絕對容差,允許直接比較而不考慮數字的大小。

使用 math.isclose 函數或自訂函數確保比較準確浮點數的近似相等,解決精確度問題帶來的挑戰。

以上是如何在Python中準確比較浮點數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn