Выбор ответа Junior Типы, изменяемость и сравнение обновлено

Сравнение float в Python

Вопрос

Как правильно проверить, что 0.1 + 0.2 равно 0.3?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: math.isclose(0.1 + 0.2, 0.3). float хранится в двоичном виде IEEE 754, и 0.1 + 0.2 даёт 0.30000000000000004.

Варианты ответа

  1. 0.1 + 0.2 == 0.3
  2. round(0.1 + 0.2) == round(0.3)
  3. (0.1 + 0.2) is 0.3
  4. math.isclose(0.1 + 0.2, 0.3)правильный ответ

Разбор

float хранится в двоичном виде IEEE 754, и 0.1 + 0.2 даёт 0.30000000000000004. Сравнивают с допуском: math.isclose (по умолчанию относительный допуск 1e-09). round без второго аргумента округляет до целого, и обе части станут 0, так что проверка пропустит любые числа меньше 0.5. is сравнивает объекты, а не значения. Для денег вообще берут Decimal или целые копейки.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме