Python 3.5+mathпонятие
math.isclose
сравнение
Проверяет примерное равенство двух чисел с учётом погрешности.
Синтаксис
math.isclose(a, b, rel_tol=1e-9, abs_tol=0.0)
Допуск по умолчанию относительный: он считается в долях от большего по модулю из двух чисел, поэтому сравнение с нулём всегда проваливается — math.isclose(1e-12, 0) вернёт False при любом rel_tol. Если один из операндов может оказаться нулём или очень малой величиной, задавай abs_tol явно. Функция появилась в Python 3.5; NaN не близок ни к чему, включая самого себя, а для комплексных чисел есть cmath.isclose.
Примеры
import math
print(math.isclose(0.1+0.2, 0.3)) # → True
print(math.isclose(1.0, 1.0000001)) # → False (rel_tol по умолчанию 1e-09, а разница 1e-07)
print(math.isclose(1.0, 1.001)) # → False
print(math.isclose(1.0, 1.001, rel_tol=0.01)) # → True
print(math.isclose(0.0, 0.0)) # → True
print(math.isclose(1e-10, 0, abs_tol=1e-9)) # → True
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности