PHP функция number_format() - это лёгкий способ форматировать числа для их последующего отображения. Можно разделять разряды, выбирая знак разделения, можно выбирать знак разделения целой и дробной части или вовсе не выводить последнюю.
Основы форматирования чисел в PHP
По умолчанию number_format() принимает число для форматирования и возвращает строку, которая содержит отформатированное число, округлённое до ближайшего целого с разделением каждой группы тысяч с помощью запятой. Рассмотрим пример.
$number = 1234567.89;
// Выводит "1,234,568"
echo number_format( $number );
Так как number_format() возвращает строку, которая содержит символы разделители, то использовать вывод функции number_format() в качестве числовых значений для последующих математических операций или функций нельзя. Поэтому, все вычисления надо производить в оригинальных числовых значениях, а форматировать результат с помощью number_format() только тогда, когда нужно показывать его пользователю.
Задаём количество знаков дробной части числа
Количество знаков в дробной части числа задаётся в качестве второго аргумента функции number_format(). Функция округляет число вверх или вниз до указанного количества десятичных знаков:
$myNumber = 123456.784321;
// Выводит "123,456.78"
echo number_format( $myNumber, 2 );
// Выводит "123,456.8"
echo number_format( $myNumber, 1 );
Использование различных символов разделителей
По умолчанию функция number_format() использует точку для отделения десятичной дробной части и запятую для разделения групп тысяч. Для того, чтобы использовать другие символы, нужно передать новый десятичный разделитель в качестве третьего аргумента в функцию, а новый разделитель тысяч — в качестве четвёртого аргумента.
Следующий пример демонстрирует форматирование чисел в соответствии с Французским стандартом — запятая используется для отделения дробной части числа, а пробел — для отделения групп тысяч.:
$myNumber = 123456.784321;
// Выводит "123 456,78"
echo number_format( $myNumber, 2, ',', ' ' );
Если вам нужно выводить числа в соответствии с Английским стандартом, то есть с округлением до двух десятичных знаков в дробной части и без отделения групп тысяч, нужно использовать следующий вызов функции:
$myNumber = 123456.784321;
// Выводит "123456.78"
echo number_format( $myNumber, 2, '.', '' );
Вы можете использовать PHP функцию localeconv() для определения текущих установок локали компьютера для десятичной точки и разделителя тысяч — чтобы установить их в функции number_format(). |
Вывод
Благодаря функции number_format() возможен лёгкий способ для вывода чисел в нужном разработчику формате для последующего чтения.
Спасибо за внимание!