Разница двух одинаковых значений не равна нулю - PullRequest
0 голосов
/ 20 декабря 2018

Когда я сравниваю два числа в python, даже если они абсолютно одинаковы, разница между этими двумя числами не ноль, а что-то очень маленькое (<10 ^ (- 16)). </p>

например

if A == B:
    print('We are the same')

Ничего не происходит.Но:

if A - B < 10^(-16):
    print(A-B)

Это печатает разницу.

В чем проблема?

1 Ответ

0 голосов
/ 20 декабря 2018

в Python, оператор ^ выполняет эксклюзив или , поэтому 10^(-16) означает 10 XOR (-16), что правильно возвращает -6 (что ниже A-B).
Если вы хотите выполнить возведение в степень, вы должны написать 10**(-16), и ваш чек теперь работает как положено.

Это означает, что ваш код должен быть:

if A - B < 10**(-16):
    print(A-B)

# OUTPUT: 0
...