round

(PHP 4, PHP 5, PHP 7)

roundОкругляет число типа float

Описание

round ( float $val [, int $precision = 0 [, int $mode = PHP_ROUND_HALF_UP ]] ) : float

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

Замечание: PHP по умолчанию не может правильно обрабатывать строки типа "12,300.2". Более подробно читайте в разделе Преобразование строк в числа.

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

val

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

precision

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

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

Если precision отрицателен, округление будет производиться слева от запятой. Если абсолютное значение precision больше или равно количеству цифр, результат округления будет равен 0

mode

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

Константы Описание
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 десятичных знаков в сторону ближайшего нечетного знака.

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

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

Примеры

Пример #1 Пример использования round()

<?php
var_dump round
(3.4);         // 3
var_dump round(3.5);         // 4
var_dump round(3.6);         // 4
var_dump round(3.60);      // 4
var_dump round(1.955832);  // 1.96
var_dump round(1241757, -3); // 1242000
var_dump round(5.0452);    // 5.05
var_dump round(5.0552);    // 5.06
?>

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

float(3)
float(4)
float(4)
float(4)
float(1.96)
float(1242000)
float(5.05)
float(5.06)

Пример #2 Как параметр precision влияет на числа с плавющей запятой

<?php
$number 
1346.21;

var_dump(round($number2));
var_dump(round($number1));
var_dump(round($number0));
var_dump(round($number, -1));
var_dump(round($number, -2));
var_dump(round($number, -3));
var_dump(round($number, -4));
?>

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

float(1346.21)
float(1346.2)
float(1346)
float(1350)
float(1300)
float(1000)
float(0)

Пример #3 Примеры использования параметра mode

<?php
echo 'Rounding modes with 9.5' PHP_EOL;
var_dump(round(9.50PHP_ROUND_HALF_UP));
var_dump(round(9.50PHP_ROUND_HALF_DOWN));
var_dump(round(9.50PHP_ROUND_HALF_EVEN));
var_dump(round(9.50PHP_ROUND_HALF_ODD));

echo 
'Rounding modes with 8.5' PHP_EOL;
var_dump(round(8.50PHP_ROUND_HALF_UP));
var_dump(round(8.50PHP_ROUND_HALF_DOWN));
var_dump(round(8.50PHP_ROUND_HALF_EVEN));
var_dump(round(8.50PHP_ROUND_HALF_ODD));
?>

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

Rounding modes with 9.5
float(10)
float(9)
float(10)
float(9)
Rounding modes with 8.5
float(9)
float(8)
float(8)
float(9)

Пример #4 Примеры использования параметра mode с указанием точности precision

<?php
echo 'Использование PHP_ROUND_HALF_UP с точностью до 1 знака' PHP_EOL;
var_dump(round1.551PHP_ROUND_HALF_UP));
var_dump(round1.541PHP_ROUND_HALF_UP));
var_dump(round(-1.551PHP_ROUND_HALF_UP));
var_dump(round(-1.541PHP_ROUND_HALF_UP));

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

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

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

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

Использование PHP_ROUND_HALF_UP с точностью до 1 знака
float(1.6)
float(1.5)
float(-1.6)
float(-1.5)

Использование PHP_ROUND_HALF_DOWN с точностью до 1 знака
float(1.5)
float(1.5)
float(-1.5)
float(-1.5)

Использование PHP_ROUND_HALF_EVEN с точностью до 1 знака
float(1.6)
float(1.5)
float(-1.6)
float(-1.5)

Использование PHP_ROUND_HALF_ODD с точностью до 1 знака
float(1.5)
float(1.5)
float(-1.5)
float(-1.5)

Список изменений

Версия Описание
5.3.0 Был добавлен параметр mode.
5.2.7 Работа функции round() была изменена в соответствии со стандартом C99.

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

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