Какого лешего print(0.1 + 0.2 == 0.3) в питоне выводит false, а не true - Общение Python мододелов

Вопрос Какого лешего print(0.1 + 0.2 == 0.3) в питоне выводит false, а не true

Регистрация
20 Апр 2013
Сообщения
85
Репутация
0
Спасибо
0
Монет
0
Попробуйте print(0.1 + 0.2).
Из-за погрешностей двоичного кодирования дробных чисел выходит такая лажа.
По этой причине рекомендуется сравнивать дробные числа не через ==, а через модуль разности. При достаточно малом модуле можно считать числа приблизительно равными. a = 0.1 + 0.2
b = 0.3
print(abs(a - b) < 0.000001)
 
Регистрация
3 Апр 2013
Сообщения
93
Репутация
0
Спасибо
0
Монет
0
Двоичная система виновна-с... В ней 0.1 + 0.2 равно 0.30000000000000004
Увы, так уж устроены компьютеры
 
Регистрация
3 Янв 2013
Сообщения
73
Репутация
-20
Спасибо
0
Монет
0
Потому что проверять равенство вещественных чисел в принципе неправильно. Они не имеют точного представления. Там на 15+ знаке хрень начинается
 
Сверху Снизу