Округление чисел в PHP
Округление чисел проводится согласно определенным способам округления.
Например, существует математическое округление, округление в большую сторону, меньшую сторону, до десятков, банковское …, способов как округлить числов достаточно много.
Основные функции окргуления до целого числа встроенные в PHP
- ceil — округляет в большую сторону, тип float.
- floor — в меньшую сторону, тип mixed.
Для обычных данных из прайс-листа данные функции вполне подходят, но для анализа статистических данных лучше использовать специализированные решения.
Математическое округление до целого
Функция round предназначена для округления дробных чисел, типа float.
По умолчанию округление производится до целого числа, согласно математическим правилам округления чисел.
Округление дробного числа до x знаков после запятой
Вторым параметром функции round является количество знаков после запятой, которое может принимать отрицательные значения.
Задание способа округления функции round
Третий параметр (константа) функции round задает способ округления
PHP_ROUND_HALF_UP — Округляет val в большую сторону от нуля до precision десятичных знаков, если следующий знак находится посередине. Т.е. округляет 1.5 в 2 и -1.5 в -2.
PHP_ROUND_HALF_DOWN — Округляет val в меньшую сторону к нулю до precision десятичных знаков, если следующий знак находится посередине. Т.е. округляет 1.5 в 1 и -1.5 в -1.
PHP_ROUND_HALF_EVEN — Округляет val до precision десятичных знаков в сторону ближайшего четного знака.
PHP_ROUND_HALF_ODD — Округляет val до precision десятичных знаков в сторону ближайшего нечетного знака.
Банковское округление, до ближайшего четного числа
Банковское округление (англ. banker’s rounding) — округление к ближайшему чётному, то есть 2,5 ? 2, 3,5 ? 4
Используя константу PHP_ROUND_HALF_EVEN функции round и округление до целого, напишем способ банковского округления числа на php.
Округление целого числа кратного 10, 100
Округление до 5
Пример округления до 5 приведен для функции ceil, для round и floor — аналогично.
Данный пример округления кратного 5 встречается наиболее часто, так же существуют варианты когда необходимо не включать само число
Округление чисел в PHP
Округление числа в любом языке программирования может быть выполнено до целого числа или до заданного количества знаков после запятой. Кроме того, учитывается еще, в какую сторону округляется число – к большему или меньшему значению, а так же математически в ближайшую сторону.
В PHP для округления чисел применяются следующие функции:
— round – округление до ближайшего значения;
— ceil – округление до ближайшего значения в большую сторону;
— floor – округление до ближайшего значения в меньшую сторону.
Округление до целого числа
Все функции в качестве основного параметра используют значение с плавающей точкой. Например:
При выполнении каждой функции, получим следующие значения:
При математическом округлении, учитывается значение числа округляемой части. Если оно меньше 5, округляется к меньшему. Если равно или больше 5, округление будет выполнено в большую сторону. В данном случае функция round округляет к меньшему значению, т.к. значение дробной части меньше 0.5. Если использовать значение больше, например:
В результате округления, получим:
Округление числа до заданного количества знаков после запятой
Для такого округления чисел используется только функция round, имеющая второй (не обязательный) параметр, определяющий точность округления. Задав его можно получить необходимое количество знаков после запятой:
Другие примеры округления
Если вдруг потребовалось реализовать более экзотическое округление – к большему или меньшему значению с заданным количеством знаков после запятой, потребуются дополнительные операции. Как было сказано выше, функции ceil и floor имеют только один параметр и не смогут округлить число до заданной точности.
В таких случаях можно выполнить умножение числа, чтобы затем округлить нужным способом. Например, число нужно округлить до большего значения с двумя знаками после запятой:
В результате получим 123.84, хотя аналогичное округление функцией round> в данном случае вернуло бы 123.83.
Так же можно поступить, если нужно округлить до меньшего значения с заданной точностью:
round
Возвращает округлённое значение val с указанной точностью precision (количество цифр после запятой). Последняя может быть отрицательной или нулём (по умолчанию).
Замечание: PHP по умолчанию не может правильно обрабатывать строки типа "12,300.2". Для подробностей см. Преобразование строк в числа.
Список параметров
Значение для округления
Количество десятичных знаков, до которых округлять
Используйте одну из этих констант для задания способа округления.
Константа | Описание |
---|---|
PHP_ROUND_HALF_UP | Округляет val в большую сторону от нуля до precision десятичных знаков, если следующий знак находится посередине. Т.е. округляет 1.5 в 2 и -1.5 в -2. |
PHP_ROUND_HALF_DOWN | Округляет val в меньшую сторону к нулю до precision десятичных знаков, если следующий знак находится посередине. Т.е. округляет 1.5 в 1 и -1.5 в -1. |
PHP_ROUND_HALF_EVEN | Округляет val до precision десятичных знаков в сторону ближайшего четного знака. |
PHP_ROUND_HALF_ODD | Округляет val до precision десятичных знаков в сторону ближайшего нечетного знака. |
Возвращаемые значения
Примеры
Пример #1 Пример использования round()
Пример #2 Примеры использования параметра mode
<?php
echo round ( 9.5 , 0 , PHP_ROUND_HALF_UP ); // 10
echo round ( 9.5 , 0 , PHP_ROUND_HALF_DOWN ); // 9
echo round ( 9.5 , 0 , PHP_ROUND_HALF_EVEN ); // 10
echo round ( 9.5 , 0 , PHP_ROUND_HALF_ODD ); // 9
echo round ( 8.5 , 0 , PHP_ROUND_HALF_UP ); // 9
echo round ( 8.5 , 0 , PHP_ROUND_HALF_DOWN ); // 8
echo round ( 8.5 , 0 , PHP_ROUND_HALF_EVEN ); // 8
echo round ( 8.5 , 0 , PHP_ROUND_HALF_ODD ); // 9
?>
Пример #3 Примеры использования параметра mode с указанием точности
<?php
/* Использование PHP_ROUND_HALF_UP с точностью до 1 знака */
echo round ( 1.55 , 1 , PHP_ROUND_HALF_UP ); // 1.6
echo round ( 1.54 , 1 , PHP_ROUND_HALF_UP ); // 1.5
echo round (- 1.55 , 1 , PHP_ROUND_HALF_UP ); // -1.6
echo round (- 1.54 , 1 , PHP_ROUND_HALF_UP ); // -1.5
/* Использование PHP_ROUND_HALF_DOWN с точностью до 1 знака */
echo round ( 1.55 , 1 , PHP_ROUND_HALF_DOWN ); // 1.5
echo round ( 1.54 , 1 , PHP_ROUND_HALF_DOWN ); // 1.5
echo round (- 1.55 , 1 , PHP_ROUND_HALF_DOWN ); // -1.5
echo round (- 1.54 , 1 , PHP_ROUND_HALF_DOWN ); // -1.5
/* Использование PHP_ROUND_HALF_EVEN с точностью до 1 знака */
echo round ( 1.55 , 1 , PHP_ROUND_HALF_EVEN ); // 1.6
echo round ( 1.54 , 1 , PHP_ROUND_HALF_EVEN ); // 1.5
echo round (- 1.55 , 1 , PHP_ROUND_HALF_EVEN ); // -1.6
echo round (- 1.54 , 1 , PHP_ROUND_HALF_EVEN ); // -1.5
/* Использование PHP_ROUND_HALF_ODD с точностью до 1 знака */
echo round ( 1.55 , 1 , PHP_ROUND_HALF_ODD ); // 1.5
echo round ( 1.54 , 1 , PHP_ROUND_HALF_ODD ); // 1.5
echo round (- 1.55 , 1 , PHP_ROUND_HALF_ODD ); // -1.5
echo round (- 1.54 , 1 , PHP_ROUND_HALF_ODD ); // -1.5
?>
Функция PHP round — округляем быстро и просто
В этой статье мы рассмотрим PHP-функцию, с помощью которой можно выполнять такую математическую операцию, как округление числа. Также читатель узнает о нескольких режимах работы данной функции и возможных способах ее реализации. Для наилучшего понимания теория будет сопровождаться практическими примерами.
Чтобы округлить цифры, в языке программирования PHP используется известная функция round() . Если вы не новичок в изучении программирования, то данная функция может быть вам уже знакома. Если же ваш путь только начинается, то ознакомиться с её возможностями стоит обязательно, так как она является полезной и может пригодиться в работе.
Прежде чем продолжить, следует сказать, что в языке PHP предусмотрены три типа округления целого и дробного числа (в большую сторону, в меньшую сторону, а также по стандартному математическому правилу). Начнём с третьего типа. Здесь round() округляет значения по правилу, которое все проходили в школе. Давайте его вспомним: 1) если цифра, подлежащая округлению, находится в пределах 0-4, то цифра разряда, до которого осуществляется округление, не изменяется, а оставшиеся числа заменяются нулями; 2) если цифра, подлежащая округлению, находится в пределах 5-9, то цифра разряда, до которого осуществляется округление, повышается на единицу, а оставшиеся числа тоже заменяются нулями.
Исходя из вышесказанного, рассмотрим несколько практических примеров:
В результате работы этого кода на экран будет выведено целое число 5.
Идём дальше. Следующий пример выведет уже целое число 6, что отвечает правилу, написанному выше:
Также можно определить, до какого именно числа округлять значения. Для этого следует указать не только число, но и количество знаков, находящихся до запятой (количество знаков (символов), находящихся после запятой). Общий синтаксис предельно прост:
Рассмотрим на примере:
Вы можете проверить работу этого кода самостоятельно, используя простейший онлайн-компилятор.
Округляем в большую/меньшую сторону
Осталось рассмотреть, как округлять цифры в меньшую или большую сторону. Сделать это тоже несложно, но потребуется дополнительный третий параметр, называемый mode. Этот параметр нужен для передачи соответствующей константы. Речь идёт о специальных зарезервированных в языке константах, которые перечислены ниже: • PHP_ROUND_HALF_UP — используется, если надо округлить в большую сторону; • PHP_ROUND_HALF_DOWN — используется, если надо округлить в меньшую сторону.
Обязательно рассмотрим практические примеры работы констант:
Пожалуй, это всё, что можно рассказать о популярной функции round. Похожая функция используется в JavaScript и Java, правда, называется она Math.round (округляет до ближайшего целого: 2.1 превращается в два, 2.6 — в три, а -1.1 — в -1).
Это предельно простые операции, освоить которые не составит труда. Если же хотите получить действительно продвинутые знания по PHP-разработке, добро пожаловать на специализированный курс в OTUS!