Python 3.5+cmathфункция
cmath.isclose()
проверка
Сравнивает два комплексных числа с допуском: относительным rel_tol и абсолютным abs_tol. Замена == для плавающей точки.
Синтаксис
cmath.isclose(a, b, *, rel_tol=1e-09, abs_tol=0.0)
Главная ловушка — сравнение с нулём: относительный допуск умножается на модуль чисел, а у нуля он нулевой, так что isclose(sin(pi), 0) даёт False. Для таких проверок задавайте abs_tol, например 1e-9. Расстояние меряется модулем разности abs(a - b), то есть сразу по обеим частям, а не по каждой отдельно.
Примеры
import cmath
z = cmath.exp(1j * cmath.pi)
print(z == -1, cmath.isclose(z, -1)) # → False True
import cmath
s = cmath.sin(cmath.pi)
print(cmath.isclose(s, 0)) # → False
print(cmath.isclose(s, 0, abs_tol=1e-9)) # → True
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности