Округление числа в меньшую сторону на PHP



Есть задача округлять дробные положительные числа в меньшую сторону. 2 знака после запятой. В результате:
2.03000 -> 2.03
2.267777 -> 2.26

Используя стандартные средства и из-за особенностей обработки чисел с плавающей точкой в компьютере и в частности получаем такие странные результаты:
php > echo floor(2.26 * 100) / 100;
2.25
php > echo round(2.03600, 2, PHP_ROUND_HALF_DOWN);
2.04

Без использования сторонних библиотек кажется, что единственный и самый простой способ выполнить такую задачу – через преобразования в строку:
// результат = взять целую часть от умножения, удалить последний символ, поделить на 100
$valueArray = explode('.', $value * 1000);
$value = substr(array_shift($valueArray), 0, -1) / 100;

Share Button