Округление чисел в PHP

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

1

Функция round($num, $precision) возвращает округлённое значение $num с указанной точностью $precision (количество цифр после запятой).

echo round(111.455);     // 111

// Один знак после запятой
echo round(111.455, 1);  // 111.5

// Два знака после запятой
echo round(111.455, 2);  // 111.46
PHP

Также функция round() может округлять целую часть числа, для этого нужно указать отрицательный $precision.

// Один знак перед запятой
echo round(111.455, -1); // 110

// Два знака перед запятой
echo round(111.455, -2); // 100
PHP

Третьим аргументом функции можно повлиять способ округления.

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

Функция ceil($num) – всегда округляет число в большую сторону.

echo ceil(1.1);  // 2
echo ceil(1.5);  // 2
echo ceil(1.6);  // 2
PHP
3

Функция floor() – округляет число в меньшую сторону.

echo floor(1.1);  // 1
echo floor(1.5);  // 1
echo floor(1.6);  // 1
PHP
4

Функция округляет число до ближайшего целого числа или до ближайшего значения с шагом 0.5.

function roundToHalf($num) {
	return round($num * 2) / 2;
}

echo roundToHalf(1.2); // 1
echo roundToHalf(1.3); // 1.5
echo roundToHalf(1.9); // 2
PHP
5

Если требуется всегда выводить числа после запятой (.00), то можно применить функцию number_format().

$num = "100.01"; 
echo number_format($num, 2, '.', ''); // 100.01
 
$num = "100"; 
echo number_format($num, 2, '.', ''); // 100.00
PHP
01.08.2021, обновлено 02.03.2024
25583

Комментарии 2

Макий Семен Макий Семен
21 января 2022 в 17:57
Внимание!
Функция number_format не просто форматирует, но округляет.
Например:
$num = "100.378";
echo number_format($num, 2, '.', '');
Выведет не 100.37, а 100.38
Поправьте плиз в статье.
Teymur Nurullaev Teymur Nurullaev
19 февраля 2023 в 15:24
function _round($number, $total_decimals) {
$number = (string)$number;
if($number === '') {
$number = '0';
}
if(strpos($number, '.') === false) {
$number .= '.';
}
$number_arr = explode('.', $number);
$decimals = substr($number_arr[1], 0, $total_decimals);
if($decimals === false) {
$decimals = '0';
}
$return = '';
if($total_decimals == 0) {
$return = $number_arr[0];
} else {
if(strlen($decimals) < $total_decimals) {
$decimals = str_pad($decimals, $total_decimals, '0', STR_PAD_RIGHT);
}
$return = $number_arr[0] . '.' . $decimals;
}
return $return;
}
echo _round(10.49609090, 2);
>> 10.49

, чтобы добавить комментарий.

Другие публикации

Сумма прописью PHP
В PHP 5.3 появился класс NumberFormatter для форматирования чисел и денежных единиц в нужной локали. На его основе была написана функция со склонением слова «рубль».
17079
+5
Работа с массивами PHP – создание, наполнение, удаление
Основные примеры работы с массивами PHP. Создание, наполнение, извлечение удаление значений.
99328
+13
Работа с FTP в PHP
Протокол FTP – предназначен для передачи файлов на удаленный хост. В PHP функции для работы с FTP как правило всегда доступны и не требуется установка дополнительного расширения.
18480
+2
Преобразование цветов в PHP
Несколько примеров как перевести цвета из HEX в RGB и обратно с помощью PHP.
15929
-1
Обработка изображений в PHP
Библиотека GD дает возможность работать с изображениями в PHP. Далее представлены примеры как изменить размер, вырезать часть изображения и т.д.
58274
+14
Поиск файлов в PHP
Для поиска файлов на сервере хорошо подходит функция glob(), которая возвращает список файлов по заданной маске, например...
23938
+1