JuniorКодИногдаЕщё не отвечали
Что выведет 0.1 + 0.2 == 0.3?
Предскажите результат этого сравнения.
print(0.1 + 0.2 == 0.3)
Определите вывод и объясните.
False. 0.1 + 0.2 равно 0.30000000000000004, потому что эти значения не представимы точно в двоичной плавающей точке, поэтому сумма отличается от литерала 0.3. Сравнивайте с допуском — math.isclose(0.1 + 0.2, 0.3).
- ✗Считать, что литералы float хранятся точно
- ✗Сравнивать float через
==вместо допуска - ✗Думать, что Python по умолчанию использует десятичную арифметику для
float
- →Как
math.iscloseрешает, достаточно ли близки два float? - →Когда стоит взять
decimal.Decimalилиfractions.Fraction?