Как оценить, достаточно ли близки два числа в Python? - PullRequest
0 голосов
/ 27 марта 2019

У меня есть два числа -

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 ]

2 голосов
/ 27 марта 2019

Ваш абсолютный допуск установлен на 0.1, поэтому разница должна быть меньше, чем 0.1, чтобы считать их равными;3.125000 - 2.954880 - это (округлено) 0.17012, что слишком велико.

Если вы хотите, чтобы их считали close, немного увеличьте ваш допуск, например:

math.isclose(3.125000, 2.954880, abs_tol=0.2)

который возвращает True, как вы ожидаете.

1 голос
/ 27 марта 2019

Функция math.isclose действительно предназначена для работы с неточностями с плавающей запятой.Вы можете использовать его для этого, но вам нужно настроить его соответствующим образом: числа в вашем примере разнесены более чем на 0.1.

Если вы не беспокоитесь о неточностях с плавающей запятой, лучший способсравните их с очевидным:

def equivalent(a, b):
    return abs(a-b) < 0.1
...