Выбор ответа Junior Типы и строгая типизация обновлено

0.1 + 0.2 в PHP

Вопрос

Что выведет var_dump(0.1 + 0.2 == 0.3);?

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

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

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

Коротко

Правильный ответ: bool(false). Числа с плавающей точкой хранятся в двоичном виде (IEEE 754), и 0.1 + 0.2 даёт 0.30000000000000004.

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

  1. bool(false)правильный ответ
  2. bool(true)
  3. float(0.3)
  4. Ошибку сравнения float

Разбор

Числа с плавающей точкой хранятся в двоичном виде (IEEE 754), и 0.1 + 0.2 даёт 0.30000000000000004. Сравнение с 0.3 ложно. Деньги считают в целых копейках или через bcmath/brick/money, а дробные числа сравнивают с допуском: abs($a - $b) < PHP_FLOAT_EPSILON.

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

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