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

在此示例中,我们比较了两个相对容差为“0.001”的非常大的数字“1e10”和“1e10 + 1” -


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

输出

生成的结果如下所示 -

The result is: True