Как оценить, достаточно ли близки два числа в Python?
У меня есть два номера -
3,125000 МБ и 2,954880 МБ.
Я хочу сравнить их, и он должен вернуть True, поскольку они почти 3 Мбайт. Как я могу сделать это в Python3.
Я пытался делать math.isclose(3.125000,2.954880, abs_tol=0.1)
,
Тем не менее, это возвращает False
, Я действительно не понимаю, как поставить толерантность здесь.
math.isclose(3.125000,2.954880, abs_tol=0.1).
https://docs.python.org/3/library/math.html
math.isclose(a, b, *, rel_tol=1e-09, abs_tol=0.0)
Я использую Python 3.5.2.
Ожидаемый результат True
, Фактический результат False
,
2 ответа
Ваша абсолютная терпимость установлена на 0.1
поэтому разница должна быть меньше 0.1
считать их равными; 3.125000 - 2.954880
является (округлено) 0.17012
, который слишком велик.
Если вы хотите, чтобы они были рассмотрены close
немного увеличьте вашу терпимость, например:
math.isclose(3.125000, 2.954880, abs_tol=0.2)
который возвращается True
как вы ожидаете.
Функция math.isclose
действительно предназначен для работы с неточностями с плавающей точкой. Вы можете использовать его для этого, но вам нужно настроить его соответствующим образом: числа в вашем примере больше, чем 0.1
Кроме.
Если вы не беспокоитесь о неточностях с плавающей запятой, лучший способ сравнить их является очевидным:
def equivalent(a, b):
return abs(a-b) < 0.1