Python math.isclose() Method



The Python math.isclose() method is used to determine whether two floating-point numbers are close to each other within a specified tolerance.

It compares two numbers, "a" and "b", and returns "True" if they are close in value, within a relative or absolute tolerance. Mathematically, it is represented as −

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

In simple terms, the method checks if the absolute difference between "a" and "b" is within a certain tolerance range.

  • If the absolute difference is smaller than or equal to the maximum of the relative tolerance times the larger of the two numbers or the absolute tolerance, then the method returns "True"; otherwise, it returns "False".
  • If either "a" or "b" is NaN, the result is always "False".
Tolerance refers to an acceptable deviation or error margin allowed when comparing two values. It represents the maximum difference between the values that can be considered insignificant.

Syntax

Following is the basic syntax of the Python math.isclose() method −

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

Parameters

This method accepts the following parameters −

  • a − This is a numeric value representing the first number.

  • b − This is a numeric value representing the second number.

  • rel_tol (optional) − This is a float representing the relative tolerance (maximum allowed difference as a fraction of the larger absolute value). The default value is 1e-9.

  • abs_tol (optional) −This is a float representing the absolute tolerance (maximum allowed difference). The default value is 0.0.

The rel_tol and abs_tol parameters of the math.isclose() method are mutually exclusive. You can only provide one of them.

Return Value

The method returns a boolean value (True or False) indicating whether the two numbers "a" and "b" are close to each other within the specified tolerances.

Example 1

In the following example, we check if the sum of "0.1" and "0.2" is approximately equal to "0.3" and retrieve the result −

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

Output

The output obtained is as follows −

The result is: True

Example 2

If the difference between the numbers is within the specified tolerances, the math.isclose() method returns True.

Here, we check if the numbers "1000" and "1001" are approximately equal within a relative tolerance of "0.001" and an absolute tolerance of "0.01" −

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

Output

Following is the output of the above code −

The result is: True

Example 3

If the relative difference between the numbers exceeds the specified tolerance, the math.isclose() method returns False.

Now, we compare the numbers "0.0001" and "0.0002" with a relative tolerance of "0.1" −

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

Output

We get the output as shown below −

The result is: False

Example 4

In this example, we are comparing two very large numbers, "1e10" and "1e10 + 1", with a relative tolerance of "0.001" −

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

Output

The result produced is as shown below −

The result is: True
python_maths.htm
Advertisements