Snorway
@Snorway

PHP intval() округляет?

Столкнулся со следующим поведением:

echo 2.28 * 100; // 228, ожидаемо
echo intval(2.28 * 100); // 227, как так?

Почему?
  • Вопрос задан
  • 1498 просмотров
Пригласить эксперта
Ответы на вопрос 4
Комментировать
@Nengchak
int intval (mixed var [, int base])

Возвращает integer-значение переменной var, используя для конвертации специфицированную базу/base (по умолчанию base равна 10).
Ответ написан
Комментировать
riky
@riky
Laravel
да уж забавно получается

intval(2.25 * 100) === intval(2.26 * 100) // true
если последняя цифра > 5 то округляется вниз

но
intval(2.5 * 100) === intval(2.6 * 100) // false

а это вообще brainfack
echo intval(2.55 * 100); // 254
echo intval(2.56 * 100); // 256


round все решает
echo round(2.55 * 100); // 255
echo round(2.56 * 100); // 256
Ответ написан
Комментировать
@codeclass
Преобразование через string поможет ))

var_dump(intval(2.55 * 100)); // int(254)
var_dump((int)(string)(2.55 * 100)); // int(255)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы