Python math.isclose() 方法



Python 的math.isclose() 方法用於確定兩個浮點數是否在指定的容差範圍內彼此接近。

它比較兩個數字“a”和“b”,如果它們的值在相對或絕對容差範圍內接近,則返回“True”。從數學上講,它表示為:

|a - b| ≤ max(rel_tol × max(|a|, |b|), abs_tol)

簡單來說,該方法檢查“a”和“b”之間的絕對差是否在某個容差範圍內。

  • 如果絕對差小於或等於相對容差乘以兩個數字中較大者的最大值或絕對容差,則該方法返回“True”;否則,返回“False”。
  • 如果“a”或“b”是 NaN,則結果始終為“False”。
容差是指比較兩個值時允許的偏差或誤差範圍。它表示可以認為不重要的值的差值最大值。

語法

以下是 Python math.isclose() 方法的基本語法:

math.isclose(a, b, *, rel_tol=1e-9, abs_tol=0.0)

引數

此方法接受以下引數:

  • a - 這是一個表示第一個數字的數值。

  • b - 這是一個表示第二個數字的數值。

  • rel_tol (可選) - 這是一個浮點數,表示相對容差(作為較大絕對值的幾分之幾的最大允許差值)。預設值為 1e-9。

  • abs_tol (可選) - 這是一個浮點數,表示絕對容差(最大允許差值)。預設值為 0.0。

math.isclose() 方法的 rel_tol 和 abs_tol 引數是互斥的。您只能提供其中一個。

返回值

該方法返回一個布林值(True 或 False),指示兩個數字“a”和“b”是否在指定的容差範圍內彼此接近。

示例 1

在以下示例中,我們檢查“0.1”和“0.2”的總和是否近似等於“0.3”,並檢索結果:

import math
result = math.isclose(0.1 + 0.2, 0.3)
print("The result is:",result)   

輸出

獲得的輸出如下:

The result is: True

示例 2

如果數字之間的差值在指定的容差範圍內,則math.isclose() 方法返回 True。

這裡,我們檢查數字“1000”和“1001”是否在“0.001”的相對容差和“0.01”的絕對容差範圍內近似相等:

import math
result = math.isclose(1000, 1001, rel_tol=0.001, abs_tol=0.01)
print("The result is:",result)  

輸出

以下是上述程式碼的輸出:

The result is: True

示例 3

如果數字之間的相對差值超過指定的容差,則math.isclose() 方法返回 False。

現在,我們比較數字“0.0001”和“0.0002”,相對容差為“0.1”:

import math
result = math.isclose(0.0001, 0.0002, rel_tol=0.1)
print("The result is:",result)  

輸出

我們得到如下所示的輸出:

The result is: False

示例 4

在此示例中,我們正在比較兩個非常大的數字“1e10”和“1e10 + 1”,相對容差為“0.001”:

import math
result = math.isclose(1e10, 1e10 + 1, rel_tol=0.001)
print("The result is:",result)  

輸出

產生的結果如下所示:

The result is: True
python_maths.htm
廣告