(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)
Программы хранят и оперируют числами используя, не зависящее от локали, бинарное представление. Когда же они выводятся на экран или печатаются, они конвертируются в строки в соответствии с требованиями локали. К примеру, число 12345.67 выведется как "12,345.67" в локали US, как "12 345,67" во французской локали и как "12.345,67" в немецкой.
Вызывая методы этого класса, вы можете форматировать числа, денежные единицы и процентные величины в представлении нужной локали. Класс NumberFormatter чувствителен к локали, следовательно вам необходимо будет создавать новый экземпляр класса для каждой локали. Методы NumberFormatter форматируют примитивные типы чисел, такие как "double", и выводят их в специфичном для локали представлении.
Для денежных единиц вы можете использовать тип форматирования денежных единиц, который возвращает строку с отформатированным числом и символом денежной единицы. Естественно NumberFormatter не знает о курсах обмена, так что для всех денежных единиц будет возвращено одно и то же число. К примеру, для числа 9988776.65 результат будет такой:
Для форматирования процентных величин используется свой тип форматирования. При таком форматировании число 0.75 будет выведено как 75%.
Для более сложного форматирования, например для разбора числа, используется форматирование основанное на наборе правил.
$string
, int $type
= NumberFormatter::TYPE_DOUBLE, int &$offset
= null
): int|float|falseДанные стили используются функцией 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