Округление чисел с десятичной частью на PHP

Всем известно что PHP совсем не годится для точных вычислений, так же как и для валютных операций. Поэтому приходится «велосипедить» и ставить все на костыли.

На днях была задача: округление числа в меньшую сторону. Я сразу же решил использовать round c соответствующим параметром PHP_ROUND_HALF_DOWN. И все было прекрасно пока мне не «надавали по шапке», почитав документацию было выяснено что эта функция округляет по следующему правилу:

a < 5, то в меньшую (наш случай) a >= 5, то в большую

Оказывается, нам такой вариант не годится совсем. Нужно чтобы число 0.237 округляло к 0.23, функция round, даже с параметром PHP_ROUND_HALF_DOWN округляла в большую сторону.

Пролистав немного страницу с документацией по функции floor нашел решение, которым и делюсь с Вами:

function floordec($dec_number, $decimals=2){    
     return floor($dec_number * pow(10,$decimals)) / pow(10,$decimals);
}

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *