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

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

Стандартные разделители, используемые функцией 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

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

Статья закончилась. Вопросы остались?
Комментарии 0
Подписаться
Я хочу получать
Правила публикации
Редактирование комментария возможно в течении пяти минут после его создания, либо до момента появления ответа на данный комментарий.