Как сделать округление в php

Добавил пользователь Валентин П.
Обновлено: 04.10.2024

Имея дело с проблемами, значения которых состоят из очень большого числа десятичных цифр, таких как (121.76763527823), мы часто сталкиваемся с проблемой их округления. Завершение их вручную может быть очень трудоемкой и ошибочной практикой. Вместо этого можно использовать встроенную функцию PHP, то есть round ().
Функция round () в PHP используется для округления числа с плавающей запятой. Его можно использовать для определения конкретного значения точности, которое округляет число в соответствии с этим значением точности. Точность также может быть отрицательной или нулевой.
Функция round () в PHP имеет 3 параметра: число, точность и режим, среди которых два последних являются необязательными параметрами. Функция round () возвращает округленное значение переданного аргумента.

Синтаксис:

Параметры: Он принимает три параметра, из которых один является обязательным, а два необязательными. Все эти параметры описаны ниже:

  1. $ number : это число, которое вы хотите округлить.
  2. $ precision : это необязательный параметр. Определяет количество десятичных цифр до. Значение этого параметра по умолчанию равно нулю.
  3. $ mode : это необязательный параметр. Указывает константу для указания режима округления. Константа может быть одной из следующих:
    • PHP_ROUND_HALF_UP: этот режим указывает округлять число, указанное параметром $ number, с точностью, указанной параметром $ precision , от нуля.
    • PHP_ROUND_HALF_DOWN: этот режим говорит округлять число, указанное параметром $ number, с точностью, указанной параметром $ precision, до нуля.
    • PHP_ROUND_HALF_EVEN: Этот режим говорит округлять число, указанное параметром $ number, с точностью, указанной параметром $ precision, до ближайшего четного значения.
    • PHP_ROUND_HALF_ODD: этот режим указывает округлять число, указанное параметром $ number, с точностью, указанной параметром $ precision, до ближайшего нечетного значения.

Возвращаемое значение: возвращает округленное значение.

Ниже программы иллюстрируют работу round () в PHP:

Возвращает округлённое значение val с указанной точностью precision (количество цифр после запятой). precision может быть отрицательным или нулём (по умолчанию).

Список параметров

Значение для округления.

Количество десятичных знаков, до которых производится округление

Если precision положительный, val округляется до точности precision цифр после запятой.

Если precision отрицателен, val округляется до точности precision цифр перед десятичной запятой, то есть до ближайшего кратного pow(10, -precision) , например для precision равной -1 val округляется до десятков, для precision равной -2 до сотен и т.д.

Используйте одну из этих констант для задания способа округления.

Константы Описание
PHP_ROUND_HALF_UP Округляет val от нуля, когда следующий знак находится посередине. То есть округляет 1.5 в 2 и -1.5 в -2.
PHP_ROUND_HALF_DOWN Округляет val к нулю, когда следующий знак находится посередине. То есть округляет 1.5 в 1 и -1.5 в -1.
PHP_ROUND_HALF_EVEN Округляет val до ближайшего четного значения, когда следующий знак находится посередине. То есть округляет 1.5 и 2.5 в 2.
PHP_ROUND_HALF_ODD Округляет val до ближайшего нечетного значения, когда следующий знак находится посередине. То есть округляет 1.5 и 2.5 в 3.

Возвращаемые значения

Значение округляется до заданного значения precision как float .

Примеры

( round ( 3.4 ));
var_dump ( round ( 3.5 ));
var_dump ( round ( 3.6 ));
var_dump ( round ( 3.6 , 0 ));
var_dump ( round ( 5.045 , 2 ));
var_dump ( round ( 5.055 , 2 ));
var_dump ( round ( 345 , - 2 ));
var_dump ( round ( 345 , - 3 ));
var_dump ( round ( 678 , - 2 ));
var_dump ( round ( 678 , - 3 ));
?>

Результат выполнения данного примера:

var_dump ( round ( $number , 3 ));
var_dump ( round ( $number , 2 ));
var_dump ( round ( $number , 1 ));
var_dump ( round ( $number , 0 ));
var_dump ( round ( $number , - 1 ));
var_dump ( round ( $number , - 2 ));
var_dump ( round ( $number , - 3 ));
?>

Результат выполнения данного примера:

echo 'Режимы округления с 9.5' . PHP_EOL ;
var_dump ( round ( 9.5 , 0 , PHP_ROUND_HALF_UP ));
var_dump ( round ( 9.5 , 0 , PHP_ROUND_HALF_DOWN ));
var_dump ( round ( 9.5 , 0 , PHP_ROUND_HALF_EVEN ));
var_dump ( round ( 9.5 , 0 , PHP_ROUND_HALF_ODD ));

echo PHP_EOL ;
echo 'Режимы округления с 8.5' . PHP_EOL ;
var_dump ( round ( 8.5 , 0 , PHP_ROUND_HALF_UP ));
var_dump ( round ( 8.5 , 0 , PHP_ROUND_HALF_DOWN ));
var_dump ( round ( 8.5 , 0 , PHP_ROUND_HALF_EVEN ));
var_dump ( round ( 8.5 , 0 , PHP_ROUND_HALF_ODD ));
?>

Результат выполнения данного примера:

echo 'Использование PHP_ROUND_HALF_UP с точностью до 1 знака' . PHP_EOL ;
var_dump ( round ( 1.55 , 1 , PHP_ROUND_HALF_UP ));
var_dump ( round (- 1.55 , 1 , PHP_ROUND_HALF_UP ));

echo PHP_EOL ;
echo 'Использование PHP_ROUND_HALF_DOWN с точностью до 1 знака' . PHP_EOL ;
var_dump ( round ( 1.55 , 1 , PHP_ROUND_HALF_DOWN ));
var_dump ( round (- 1.55 , 1 , PHP_ROUND_HALF_DOWN ));

echo PHP_EOL ;
echo 'Использование PHP_ROUND_HALF_EVEN с точностью до 1 знака' . PHP_EOL ;
var_dump ( round ( 1.55 , 1 , PHP_ROUND_HALF_EVEN ));
var_dump ( round (- 1.55 , 1 , PHP_ROUND_HALF_EVEN ));

echo PHP_EOL ;
echo 'Использование PHP_ROUND_HALF_ODD с точностью до 1 знака' . PHP_EOL ;
var_dump ( round ( 1.55 , 1 , PHP_ROUND_HALF_ODD ));
var_dump ( round (- 1.55 , 1 , PHP_ROUND_HALF_ODD ));
?>

Функции round, ceil и floor — округление числа на PHP

Округляются числа в PHP так. Нам понадобятся три функции: round, ceil и floor. Первая функция округляет до ближайшего целого числа, вторая до ближайшего целого, но только в большую сторону, а третья округляет в меньшую. Рассмотрим всё по-порядку.

Синтаксис: float round ( float value [, int precision] )

Первый параметр дробное число. Второй параметр необязательный. В нём указывается точность округления. Примеры использования и результаты выполнения:

Округление числа до сотых:

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

ceil() — округление в большую сторону

Синтаксис: float ceil ( float value )

Один параметр, которому передаётся дробь. На выходе целое число, округлённое в большую сторону. Примеры использования и результаты выполнения:

floor() — округление в меньшую сторону

Синтаксис: float floor(float value)

Имеет один параметр для передачи дроби. Выходит целое число, округлённое в меньшую сторону, либо попросту остаётся целое число. Примеры использования и результаты выполнения:

Возвращает ближайшее большее целое от value . Тип возвращаемого значения остаётся float т.к. диапазон float больше integer .

Примеры

Смотрите также

  • floor() – Округляет дробь в меньшую сторону
  • round() – Округляет число типа float

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

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

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

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

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

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

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

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

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

При математическом округлении, учитывается значение числа округляемой части. Если оно меньше 5, округляется к меньшему. Если равно или больше 5, округление будет выполнено в большую сторону. В данном случае функция round округляет к меньшему значению, т.к. значение дробной части меньше 0.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

Округление чисел проводится согласно определенным способам округления.

Например, существует математическое округление, округление в большую сторону, меньшую сторону, до десятков, банковское . способов как округлить числов достаточно много.

Основные функции окргуления до целого числа встроенные в 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 встречается наиболее часто, так же существуют варианты когда необходимо не включать само число

Читайте также: