Статьи Программирование в PHP

Округление чисел в PHP

Округление числа в любом языке программирования может быть выполнено до целого числа или до заданного количества знаков после запятой. Кроме того, учитывается еще, в какую сторону округляется число – к большему или меньшему значению, а так же математически в ближайшую сторону.

В PHP для округления чисел применяются следующие функции:

- round – округление до ближайшего значения;

- ceil – округление до ближайшего значения в большую сторону;

- floor – округление до ближайшего значения в меньшую сторону.

Округление до целого числа

Все функции в качестве основного параметра используют значение с плавающей точкой. Например:

$x = 123.4393;

При выполнении каждой функции, получим следующие значения:

echo ceil($x); // 124 (к большему целому значению)
echo floor($x); // 123 (к меньшему целому значению)
echo round($x); // 123 (математически к ближайшему)

При математическом округлении, учитывается значение числа округляемой части. Если оно меньше 5, округляется к меньшему. Если равно или больше 5, округление будет выполнено в большую сторону. В данном случае функция round округляет к меньшему значению, т.к. значение дробной части меньше 0.5. Если использовать значение больше, например:

$x = 123.5;

В результате округления, получим:

echo round($x); // 124

Округление числа до заданного количества знаков после запятой

Для такого округления чисел используется только функция round, имеющая второй (не обязательный) параметр, определяющий точность округления. Задав его можно получить необходимое количество знаков после запятой:

$x = 123.8393;
echo round($x, 1); // 123.8
echo round($x, 2); // 123.84
echo round($x, 3); // 123.839

Другие примеры округления

Если вдруг потребовалось реализовать более экзотическое округление – к большему или меньшему значению с заданным количеством знаков после запятой, потребуются дополнительные операции. Как было сказано выше, функции ceil и floor имеют только один параметр и не смогут округлить число до заданной точности.

В таких случаях можно выполнить умножение числа, чтобы затем округлить нужным способом. Например, число нужно округлить до большего значения с двумя знаками после запятой:

$x = 123.8313;
echo ceil($x * 100) / 100; // 123.84

В результате получим 123.84, хотя аналогичное округление функцией round в данном случае вернуло бы 123.83.

Так же можно поступить, если нужно округлить до меньшего значения с заданной точностью:

$x = 123.8393;
echo floor($x * 100) / 100; // 123.83


Комментарии

Имя:
Текст комментария:
* В комментариях запрещено публиковать рекламные объявления. Сообщения, содержащие ссылки на сторонние ресурсы добавляется в скрытом режиме. Они будут открыты, если не нарушают установленных правил, после проверки.
Защита от спам-роботов (* Обязателельно укажите ответ на простой вопрос ниже.)
Под каким номером в алфавите буква «Б»? (цифра)