Задать вопрос
Snorway
@Snorway

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

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

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

Почему?
  • Вопрос задан
  • 1645 просмотров
Подписаться 2 Оценить 1 комментарий
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 4
Комментировать
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)
Ответ написан
Комментировать
@Nengchak
int intval (mixed var [, int base])

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

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

Похожие вопросы