Форматирование чисел: функция PHP number_format()

Функция PHP number_format() предназначена для поразрядного форматирования чисел с отделением дробной части. Конкретный формат полученного значения зависит от количества переданных аргументов. Функция может принять один, два или четыре параметра и возвращает обработанное значение в виде строки.

Форматируемое число

Первый и обязательный аргумент функции number_format() в PHP - это непосредственно число, которое нужно отформатировать. Выражение будет выглядеть так:

string number_format(float $number)

Параметр $number должен представлять собой число с плавающей точкой.

Результатом работы функции станет строка, содержащая исходное число, разбитое по разрядам. Дробная часть будет отброшена с округлением. В качестве разделителя разрядов используется запятая.

<?php
$number1 = 12345678.4321;
$result1 = number_format($number1); // 12,345,678

$number2 = 12345678.5678;
$result2 = number_format($number2); // 12,345,679
?>

Во втором примере произошло округление дробной части.

Дробная часть

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

string number_format(float $number, int $decimals)

$decimals - это целое число (integer), определяющее количество знаков после запятой, которое нужно сохранить. По умолчанию оно равно нулю, поэтому при передаче одного аргумента дробная часть отбрасывается.

Приняв два параметра, функция вернет отформатированную строку, использовав для разделителя целой и дробной части точку.

<?php
$number1 = 12345678.4321;
$result1 = number_format($number1, 2); // 12,345,678.43

$number2 = 12345678.5678;
$result2 = number_format($number2, 1); // 12,345,679.6

$number3 = 12345678;
$result3 = number_format($number3, 3); // 12,345,679.000
?>

В этом случае также происходит округление дробной части. Вместо недостающих цифр подставляются нули.

Пользовательские разделители

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

string number_format(float $number, int $decimals, string $dec_point, string $thousands_sep)

И $dec_point, и $thousands_sep являются строковыми данными. В качестве разделителя можно передать любой символ, а также пробел или пустую строку. Из последовательности символов будет использован только первый, остальные обрежутся.

Работа функции php number_format в примерах с четырьмя параметрами:

<?php
$number1 = 12345678.4321;
$number2 = 12345678.5678;
$number3 = 12345678;

$result1 = number_format($number1, 5, '.', ','); // 12,345,678.43210

$result2 = number_format($number2, 5, '^', ' '); // 12 345 678:56780

$result3 = number_format($number2, 5, '-', ''); // 12345678-56780

$result4 = number_format($number3, 5, '***', 'xxx'); // 12x345x678*000

?>

Разделители заменяются пользовательскими, все остальные правила сохраняются.

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

Комментарии