round

(PHP 4, PHP 5, PHP 7, PHP 8)

roundОкругляет число с плавающей точкой

Описание

round(int|float $num, int $precision = 0, int $mode = PHP_ROUND_HALF_UP): float

Функция возвращает значение числа 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)

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

  • ceil() - Округляет дробное число в бо́льшую сторону
  • floor() - Округляет дробное число в меньшую сторону
  • number_format() - Форматирует число с группировкой классов многозначного числа