Все ленты — последние статьи

Форматирование чисел с помощью функции PHP number_format()

При выводе чисел на веб странице отличным способом улучшить доступность информации является форматирование для облегчения восприятия. Например, число 123,456.78 воспринимается гораздо лучше, чем 123456.784321.

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

По умолчанию number_format() принимает число для форматирования и возвращает строку, которая содержит отформатированное число, округлённое до ближайшего целого с разделением каждой группы тысяч с помощью запятой:
1 $myNumber = 1234567.89;
2
3 // Выводит "1,234,568"
4 echo number_format( $myNumber );

 

Так как number_format() возвращает строку, которая содержит символы разделители, то использовать вывод функции number_format() в качестве числовых значений для последующих математических операций или функций нельзя. Поэтому, все вычисления надо производить в оригинальных числовых значениях, а форматировать результат с помощью number_format() только тогда, когда нужно показывать его пользователю.
Задаём количество знаков дробной части числа

Количество знаков в дробной части числа задаётся в качестве второго аргумента функции number_format(). Функция округляет число вверх или вниз до указанного количества десятичных знаков:
1 $myNumber = 123456.784321;
2
3 // Выводит "123,456.78"
4 echo number_format( $myNumber, 2 );
5
6 // Выводит "123,456.8"
7 echo number_format( $myNumber, 1 );
Использование различных символов разделителей

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

Следующий пример демонстрирует форматирование чисел в соответствии с Французским стандартом — запятая используется для отделения дробной части числа, а пробел — для отделения групп тысяч.:
1 $myNumber = 123456.784321;
2
3 // Выводит "123 456,78"
4 echo number_format( $myNumber, 2, ',', ' ' );

Если вам нужно выводить числа в соответствии с Английским стандартом, то есть с округлением до двух десятичных знаков в дробной части и без отделения групп тысяч, нужно использовать следующий вызов функции:
1 $myNumber = 123456.784321;
2
3 // Выводит "123456.78"
4 echo number_format( $myNumber, 2, '.', '' );

Вы можете использовать PHP функцию localeconv() для определения текущих установок локали компьютера для десятичной точки и разделителя тысяч — чтобы установить их в функции number_format().
Резюме

Функция number_format() предоставляет лёгкий способ для вывода чисел в удобном для чтения формате.