Всем известно что PHP совсем не годится для точных вычислений, так же как и для валютных операций. Поэтому приходится «велосипедить» и ставить все на костыли.
На днях была задача: округление числа в меньшую сторону. Я сразу же решил использовать
a < 5, то в меньшую (наш случай) a >= 5, то в большую
Оказывается, нам такой вариант не годится совсем. Нужно чтобы число 0.237 округляло к 0.23, функция round, даже с параметром PHP_ROUND_HALF_DOWN округляла в большую сторону.
Пролистав немного страницу с документацией по функции
function floordec($dec_number, $decimals=2){ return floor($dec_number * pow(10,$decimals)) / pow(10,$decimals); }