首頁 >後端開發 >Python教學 >如何在 Python 中準確比較浮點數是否接近相等?

如何在 Python 中準確比較浮點數是否接近相等?

DDD
DDD原創
2024-12-22 19:24:11678瀏覽

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

在Python 中比較浮點數是否幾乎相等:仔細觀察

由於潛在的捨入和精度問題,比較浮點數是否完全相等Python 可能具有挑戰性。這是一個眾所周知的問題,Bruce Dawson 的「比較浮點數,2012 年版」部落格文章中強調了這一點。為了在 Python 中有效應對這項挑戰,可以考慮多種方法。

標準函式庫函數

Python 3.5 引入了math.isclose() 和cmath.isclose()函數,專門用於將浮點數與容差等級進行比較。這些函數接受三個參數:

  • a 和b:要比較的浮點值
  • rel_tol(可選):相對容差,這是應用於較大幅度的因子a和b定義允許的差異
  • abs_tol(可選):絕對容差,設定最小差異閾值

如果a和b之間的絕對差小於rel_tol * max(abs(a), abs(b))或abs_tol,則這些值被認為是相等的。

早期Python 版本的自訂函數

如果您使用的Python 版本早於3.5 中,您可以根據文件中提供的以下程式碼片段實作自己的isclose ()函數:

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)

此自訂函數提供與標準函式庫函數相同的功能,可讓您比較內部的浮點數指定的公差範圍。

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

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