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

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

DDD
發布: 2024-12-22 19:24:11
原創
742 人瀏覽過

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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板