Обрезать число до сотых без округления

186
08 апреля 2019, 04:50

Каким образом обрезать число до сотых, не округляя его?

echo number_format(0.65999, 2, '.', ''); // 0.66, Округлило
echo "\n";
echo intval(0.65999 * 100) / 100; // 0.65, Не округлило
echo "\n";
echo intval(0.29 * 100) / 100; // 0.28, Округлило

Перепробовал многие варианты из интернета, везде округление было ни на одном числе, так на другом. Есть какое-то нормальное решение или без собственной функции не обойтись?

https://ideone.com/qm7YUE

Answer 1

Используйте библиотеку BCMath и ее функцию bcdiv:

echo bcdiv(0.65999, 1, 2); // 0.65

Ну, и как вариант, можно использовать preg_replace:

echo preg_replace('/\.\d{2}\K.+/', '', 0.65999); // 0.65
Answer 2

Есть функции ceil и floor:
printf('%05.2f', floor(0.65999*100)/100);

отсекаем дробную часть после умножения на сто и делим

READ ALSO
Как реализовать статистику посещений в Laravel?

Как реализовать статистику посещений в Laravel?

Ребят, всех приветствуюВ общем столкнулся с таким вопросом

152
Фильтр товаров через input WooCommerce

Фильтр товаров через input WooCommerce

Предисловие: Есть фильтр товаров, использую плагин WooCommerce Product Filter, по умолчанию стоит Range Filter через слайдер(ползунок), но у меня задача, что...

173