Округление числа в любом языке программирования может быть выполнено до целого числа или до числа с заданным количеством знаков после запятой. Также можно учитывать направление, в какую сторону должно округляться число – к большему или меньшему значению. Помимо этого, число может быть округлено в математически ближайшую сторону. Плюс, может возникнуть множество уникальных требований к тому, как должны обрабатываться и выводиться числа в приложении.
В PHP для округления чисел обычно применяются следующие функции:
- round – округление до ближайшего значения;
- ceil – округление до ближайшего значения в большую сторону;
- floor – округление до ближайшего значения в меньшую сторону.
Все функции в качестве основного параметра используют значение с плавающей точкой. Например:
$x = 123.4393;
При выполнении функций округления, получим следующие значения:
echo ceil($x); // 124 (к большему целому значению)
echo floor($x); // 123 (к меньшему целому значению)
echo round($x); // 123 (математически к ближайшему)
В отличии о первых двух функций, round может вернуть значение или больше или меньше заданного. При математическом округлении, учитывается дробное значение округляемой части. Если оно меньше 5, округляется к меньшему. Если равно или больше 5, округление будет выполнено в большую сторону. В данном случае функция round округляет к меньшему значению, т.к. значение дробной части меньше 0.5. Если использовать значение больше, например:
$x = 123.51;
В результате округления такого значения, получим:
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
Это не сложная алгоритмическая задача. Например, если мы хотим получить округление с шагом 0.5, можно использовать подобный программный код:
$x = 123.8313;
echo floor($x / 0.5) * 0.5; // В результате получим 123.5
Аналогично можно поступить, если нужно сделать с шагом 0.2:
$x = 123.8313;
echo floor($x / 0.2) * 0.2; // В результате получим 123.8
Отдельно можно выделить задачу, где необходимо округлить до каких-то круглых значений – десятков, сотен, тысяч. В данном случае, также нет необходимости выискивать специальные функции для этого. Достаточно немного математики и имеющихся возможностей языка программирования:
$x = 12345.8393;
echo round($x / 10) * 10; // получим округление до десятков 12350
echo round($x / 100) * 100; // получим округление до десятков 12300
echo round($x / 1000) * 1000; // получим округление до десятков 12000
Стоит обратить внимание, что в этом примере происходит математическое округление, поэтому в варианте с десятками происходит не просто отбрасывание единиц, а формируется число 50 вместо 40. Но этот нюанс можно также учесть, если использовать функции для округления к большему или меньшему значению.
Если вдруг потребовалось реализовать более экзотическое округление – к большему или меньшему значению с заданным количеством знаков после запятой, потребуются дополнительные операции. Как было сказано выше, функции ceil и floor имеют только один параметр и не смогут округлить число до заданной точности.
В таких случаях можно выполнить умножение числа на нужный порядок, чтобы затем округлить нужным способом. Например, число нужно округлить до большего значения с двумя знаками после запятой:
$x = 123.8313;
echo ceil($x * 100) / 100; // 123.84
В результате получим 123.84, хотя аналогичное округление функцией round в данном случае вернуло бы 123.83.
Так же можно поступить, если нужно округлить до меньшего значения с заданной точностью:
$x = 123.8313;
echo floor($x * 100) / 100; // 123.83
Как можем видеть, функциональных возможностей у языка программирования PHP предостаточно. А все, что нельзя сделать одной готовой функций, всегда можно реализовать собственным программным кодом.
Автор: Антон Сенников
Дата публикации: 14.03.2015. Обновлено: 14.03.2025
Копирование, переименование и перемещение файлов в PHP
Функция fwrite в PHP, описание и примеры
В комментариях запрещено публиковать рекламные материалы. Все сообщения оправляются на модерацию и будут опубликованы, если не нарушают правил сайта после проверки.