首頁 > 後端開發 > Python教學 > 如何在 Python 中可靠地比較浮點數是否相等?

如何在 Python 中可靠地比較浮點數是否相等?

Patricia Arquette
發布: 2024-12-18 11:49:10
原創
433 人瀏覽過

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

Python 中的近似浮點相等:標準函式來救援

人們普遍認為,比較浮點是否精確相等可能會出現問題,因為由於浮點精度限制,簡單的相等性檢查變得不可靠。我們如何在 Python 中克服這項挑戰?

Python 的內建解決方案

Python 3.5 版本為此引入了兩個基本函數:math.isclose 和 cmath.isclose 。這些函數(如 PEP 485 中所定義)可以對浮點數進行穩健比較,同時考慮與精確度相關的差異。

isclose 函數

isclose 函數採用三個參數:

  • a 和b:要浮點數比較
  • rel_tol(可選):相對容差閾值
  • abs_tol(可選):絕對容差閾值

rel_tol 表示相對於允許的偏差百分比a 和b 的大小。另一方面,abs_tol 是一個無論大小都必須滿足的絕對閾值。

容差注意事項

函數比較 a 和 b 之間的絕對差rel_tol * max(|a|, |b|) 和 abs_tol。如果差異小於這些值中的任何一個,則浮點數被視為相等。

早期Python 版本的等效實作

對於3.5 之前的Python 版本,等效的實作函數可以定義如下:

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 中處理數值資料時這是非常寶貴的工具。

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板