(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)
Программы хранят и оперируют числами в двоичном представлении, которое не зависит от текущих региональных настроек. При выводе на экран или печати числа программы преобразовывают числа в строку по правилам, которые соответствуют региональным параметрам. Число 12345.67 в локали US программа выведет как «12,345.67», во французской локали — как «12 345,67» и как «12.345,67» в немецкой.
Методы класса NumberFormatter форматируют числа, денежные единицы и процентные величины в представлении заданных по умолчанию региональных настроек. Класс NumberFormatter чувствителен к региональным параметрам, поэтому придётся создавать новый экземпляр класса NumberFormatter для каждой локали. Методы класса NumberFormatter форматируют числа примитивного типа наподобие double и выводят число в виде строки, формат которой зависит от текущих региональных параметров.
Для валют можно использовать тип формата денежной единицы, который возвращает строку с отформатированным числом и символом валюты. Естественно, класс NumberFormatter не знает об обменных курсах, так что выводимое число будет одинаковым независимо от установленной валюты. То есть одинаковые числа имеют разную денежную стоимость, которая зависит от настроек региональной валюты. Для числа 9988776.65 результат будет таким:
Чтобы отформатировать процентную величину, создают средство форматирования с типом процентного формата, который соответствует текущим региональным настройкам. Такое средство форматирования отобразит десятичную дробь числа 0.75 как 75 %.
Для более сложного форматирования, например записи чисел в виде текста, работают правила средства форматирования по преобразованию чисел в текст.
Данные стили используются функцией numfmt_create() для определения типа форматирования.
NumberFormatter::PATTERN_DECIMAL
NumberFormatter::DECIMAL
NumberFormatter::CURRENCY
NumberFormatter::PERCENT
NumberFormatter::SCIENTIFIC
NumberFormatter::SPELLOUT
NumberFormatter::ORDINAL
NumberFormatter::DURATION
NumberFormatter::PATTERN_RULEBASED
NumberFormatter::CURRENCY_ACCOUNTING
($3.00)
для отрицательной суммы в валюте вместо -$3.00
. Доступно с PHP 7.4.1 и ICU 53. NumberFormatter::DEFAULT_STYLE
NumberFormatter::IGNORE
Данные константы определяют как будут разобраны или отформатированы числа. Их необходимо передавать функциям numfmt_format() и numfmt_parse().
NumberFormatter::TYPE_DEFAULT
NumberFormatter::TYPE_INT32
NumberFormatter::TYPE_INT64
NumberFormatter::TYPE_DOUBLE
NumberFormatter::TYPE_CURRENCY
Атрибут формата чисел для numfmt_get_attribute() и numfmt_set_attribute().
NumberFormatter::PARSE_INT_ONLY
NumberFormatter::GROUPING_USED
NumberFormatter::DECIMAL_ALWAYS_SHOWN
NumberFormatter::MAX_INTEGER_DIGITS
NumberFormatter::MIN_INTEGER_DIGITS
NumberFormatter::INTEGER_DIGITS
NumberFormatter::MAX_FRACTION_DIGITS
NumberFormatter::MIN_FRACTION_DIGITS
NumberFormatter::FRACTION_DIGITS
NumberFormatter::MULTIPLIER
NumberFormatter::GROUPING_SIZE
NumberFormatter::ROUNDING_MODE
NumberFormatter::ROUNDING_INCREMENT
NumberFormatter::FORMAT_WIDTH
NumberFormatter::PADDING_POSITION
NumberFormatter::SECONDARY_GROUPING_SIZE
NumberFormatter::SIGNIFICANT_DIGITS_USED
NumberFormatter::MIN_SIGNIFICANT_DIGITS
NumberFormatter::MAX_SIGNIFICANT_DIGITS
NumberFormatter::LENIENT_PARSE
Атрибуты текста форматирования чисел, используются в numfmt_get_text_attribute() и numfmt_set_text_attribute().
NumberFormatter::POSITIVE_PREFIX
NumberFormatter::POSITIVE_SUFFIX
NumberFormatter::NEGATIVE_PREFIX
NumberFormatter::NEGATIVE_SUFFIX
NumberFormatter::PADDING_CHARACTER
NumberFormatter::CURRENCY_CODE
NumberFormatter::DEFAULT_RULESET
NumberFormatter::PUBLIC_RULESETS
Символы форматирования чисел для numfmt_get_symbol() и numfmt_set_symbol().
NumberFormatter::DECIMAL_SEPARATOR_SYMBOL
NumberFormatter::GROUPING_SEPARATOR_SYMBOL
NumberFormatter::PATTERN_SEPARATOR_SYMBOL
NumberFormatter::PERCENT_SYMBOL
NumberFormatter::ZERO_DIGIT_SYMBOL
NumberFormatter::DIGIT_SYMBOL
NumberFormatter::MINUS_SIGN_SYMBOL
NumberFormatter::PLUS_SIGN_SYMBOL
NumberFormatter::CURRENCY_SYMBOL
NumberFormatter::INTL_CURRENCY_SYMBOL
NumberFormatter::MONETARY_SEPARATOR_SYMBOL
NumberFormatter::EXPONENTIAL_SYMBOL
NumberFormatter::PERMILL_SYMBOL
NumberFormatter::PAD_ESCAPE_SYMBOL
NumberFormatter::INFINITY_SYMBOL
NumberFormatter::NAN_SYMBOL
NumberFormatter::SIGNIFICANT_DIGIT_SYMBOL
NumberFormatter::MONETARY_GROUPING_SEPARATOR_SYMBOL
Режимы округления для numfmt_get_attribute() и numfmt_set_attribute() с атрибутом NumberFormatter::ROUNDING_MODE
.
NumberFormatter::ROUND_CEILING
NumberFormatter::ROUND_DOWN
NumberFormatter::ROUND_FLOOR
NumberFormatter::ROUND_HALFDOWN
NumberFormatter::ROUND_HALFEVEN
NumberFormatter::ROUND_HALFUP
NumberFormatter::ROUND_UP
Значения позиции дополнения для numfmt_get_attribute() и numfmt_set_attribute() с атрибутом NumberFormatter::PADDING_POSITION
.
NumberFormatter::PAD_AFTER_PREFIX
NumberFormatter::PAD_AFTER_SUFFIX
NumberFormatter::PAD_BEFORE_PREFIX
NumberFormatter::PAD_BEFORE_SUFFIX