(PHP 4, PHP 5, PHP 7, PHP 8)
round — Округляет число с плавающей точкой
Функция возвращает значение числа num
,
которое округлила с точностью precision
—
количество цифр после запятой.
Значение точности precision
принимает отрицательные значения и ноль —
значение по умолчанию.
num
Значение, которое требуется округлить.
precision
Необязательное количество десятичных знаков, до которых функция округлит число.
Функция округлит число num
до такого количества
значащих цифр после десятичной точки, которое указали в параметре
precision
,
если точность precision
положительна.
Функция округлит число num
до такого количества
значащих цифр перед десятичной точкой, которое указали в параметре
precision
,
если точность precision
отрицательна.
При отрицательном значении точности функция округляет число до следующего
кратного результата выражения pow(10, -$precision)
.
Число num
округляется до десятков,
если точность precision
равна -1,
до сотен, если точность precision
равна -2, и т. д.
mode
Режим округления устанавливают константой из следующего списка:
Константы | Описание |
---|---|
PHP_ROUND_HALF_UP |
Округляет положительное число num в бо́льшую сторону,
а отрицательное в меньшую, превращая 1.5 в 2 и -1.5 в -2; стремится от нуля.
|
PHP_ROUND_HALF_DOWN |
Округляет положительное число num в меньшую сторону,
а отрицательное в бо́льшую, превращая 1.5 в 1 и -1.5 в -1; стремится к нулю.
|
PHP_ROUND_HALF_EVEN |
Округляет число num до ближайшего чётного значения,
превращая 1.5 и 2.5 в 2.
|
PHP_ROUND_HALF_ODD |
Округляет число num до ближайшего нечётного значения,
превращая 1.5 в 1 и 2.5 в 3.
|
Функция возвращает число с плавающей точкой (float),
которое получила путём округления входного числа до точности,
которую установили в параметре precision
.
При недопустимом режиме mode
функция
выбрасывает ошибку ValueError.
До PHP 8.4.0 для недопустимого режима без предупреждения устанавливалось значение PHP_ROUND_HALF_UP
.
Версия | Описание |
---|---|
8.4.0 |
Функция теперь выбрасывает ошибку ValueError,
если в параметр mode передали недопустимый режим округления.
|
8.0.0 |
Параметр num больше не принимает внутренние объекты,
которые поддерживают числовое преобразование.
|
Пример #1 Пример округления чисел функцией round()
<?php
var_dump(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));
?>
Результат выполнения приведённого примера:
float(3) float(4) float(4) float(4) float(5.05) float(5.06) float(300) float(0) float(700) float(1000)
Пример #2 Пример влияния параметра precision
на числа с плавающей точкой
<?php
$number = 135.79;
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));
?>
Результат выполнения приведённого примера:
float(135.79) float(135.79) float(135.8) float(136) float(140) float(100) float(0)
Пример #3 Пример влияния режима mode
на округление чисел
<?php
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));
?>
Результат выполнения приведённого примера:
Режимы округления с 9.5 float(10) float(9) float(10) float(9) Режимы округления с 8.5 float(9) float(8) float(8) float(9)
Пример #4
Пример округления чисел с режимом mode
и точностью precision
<?php
echo 'Округление с точностью до 1 знака в режиме PHP_ROUND_HALF_UP' . 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 'Округление с точностью до 1 знака в режиме PHP_ROUND_HALF_DOWN' . 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 'Округление с точностью до 1 знака в режиме PHP_ROUND_HALF_EVEN' . 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 'Округление с точностью до 1 знака в режиме PHP_ROUND_HALF_ODD' . PHP_EOL;
var_dump(round( 1.55, 1, PHP_ROUND_HALF_ODD));
var_dump(round(-1.55, 1, PHP_ROUND_HALF_ODD));
?>
Результат выполнения приведённого примера:
Округление с точностью до 1 знака в режиме PHP_ROUND_HALF_UP float(1.6) float(-1.6) Округление с точностью до 1 знака в режиме PHP_ROUND_HALF_DOWN float(1.5) float(-1.5) Округление с точностью до 1 знака в режиме PHP_ROUND_HALF_EVEN float(1.6) float(-1.6) Округление с точностью до 1 знака в режиме PHP_ROUND_HALF_ODD float(1.5) float(-1.5)