The NumberFormatter class

(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 Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠΌ:

  • 9 988 776,65 € для Π€Ρ€Π°Π½Ρ†ΠΈΠΈ
  • 9.988.776,65 € для Π“Π΅Ρ€ΠΌΠ°Π½ΠΈΠΈ
  • $9,988,776.65 для БША

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π½ΡƒΡŽ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ, ΡΠΎΠ·Π΄Π°ΡŽΡ‚ срСдство форматирования с Ρ‚ΠΈΠΏΠΎΠΌ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π½ΠΎΠ³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ соотвСтствуСт Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ Ρ€Π΅Π³ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ настройкам. Π’Π°ΠΊΠΎΠ΅ срСдство форматирования ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ Π΄Π΅ΡΡΡ‚ΠΈΡ‡Π½ΡƒΡŽ Π΄Ρ€ΠΎΠ±ΡŒ числа 0.75 ΠΊΠ°ΠΊ 75 %.

Для Π±ΠΎΠ»Π΅Π΅ слоТного форматирования, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ записи чисСл Π² Π²ΠΈΠ΄Π΅ тСкста, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π° срСдства форматирования ΠΏΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡŽ чисСл Π² тСкст.

ΠžΠ±Π·ΠΎΡ€ класса

class NumberFormatter {
/* ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρ‹ */
public const int PATTERN_DECIMAL;
public const int DECIMAL;
public const int CURRENCY;
public const int PERCENT;
public const int SCIENTIFIC;
public const int SPELLOUT;
public const int ORDINAL;
public const int DURATION;
public const int PATTERN_RULEBASED;
public const int IGNORE;
public const int CURRENCY_ISO;
public const int CURRENCY_PLURAL;
public const int CURRENCY_ACCOUNTING;
public const int CASH_CURRENCY;
public const int CURRENCY_STANDARD;
public const int DEFAULT_STYLE;
public const int ROUND_CEILING;
public const int ROUND_FLOOR;
public const int ROUND_DOWN;
public const int ROUND_UP;
public const int ROUND_TOWARD_ZERO;
public const int ROUND_HALFEVEN;
public const int ROUND_HALFODD;
public const int ROUND_HALFDOWN;
public const int ROUND_HALFUP;
public const int PAD_BEFORE_PREFIX;
public const int PAD_AFTER_PREFIX;
public const int PAD_BEFORE_SUFFIX;
public const int PAD_AFTER_SUFFIX;
public const int PARSE_INT_ONLY;
public const int GROUPING_USED;
public const int MAX_INTEGER_DIGITS;
public const int MIN_INTEGER_DIGITS;
public const int INTEGER_DIGITS;
public const int MAX_FRACTION_DIGITS;
public const int MIN_FRACTION_DIGITS;
public const int FRACTION_DIGITS;
public const int MULTIPLIER;
public const int GROUPING_SIZE;
public const int ROUNDING_MODE;
public const int ROUNDING_INCREMENT;
public const int FORMAT_WIDTH;
public const int PADDING_POSITION;
public const int LENIENT_PARSE;
public const int POSITIVE_PREFIX;
public const int POSITIVE_SUFFIX;
public const int NEGATIVE_PREFIX;
public const int NEGATIVE_SUFFIX;
public const int PADDING_CHARACTER;
public const int CURRENCY_CODE;
public const int DEFAULT_RULESET;
public const int PUBLIC_RULESETS;
public const int PERCENT_SYMBOL;
public const int ZERO_DIGIT_SYMBOL;
public const int DIGIT_SYMBOL;
public const int MINUS_SIGN_SYMBOL;
public const int PLUS_SIGN_SYMBOL;
public const int CURRENCY_SYMBOL;
public const int EXPONENTIAL_SYMBOL;
public const int PERMILL_SYMBOL;
public const int PAD_ESCAPE_SYMBOL;
public const int INFINITY_SYMBOL;
public const int NAN_SYMBOL;
public const int TYPE_DEFAULT;
public const int TYPE_INT32;
public const int TYPE_INT64;
public const int TYPE_DOUBLE;
public const int TYPE_CURRENCY;
/* ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ */
public function __construct(string $locale, int $style, ?string $pattern = null)
public static function create(string $locale, int $style, ?string $pattern = null): ?NumberFormatter
public function format(int|float $num, int $type = NumberFormatter::TYPE_DEFAULT): string|false
public function formatCurrency(float $amount, string $currency): string|false
public function getAttribute(int $attribute): int|float|false
public function getErrorCode(): int
public function getErrorMessage(): string
public function getLocale(int $type = ULOC_ACTUAL_LOCALE): string|false
public function getPattern(): string|false
public function getSymbol(int $symbol): string|false
public function getTextAttribute(int $attribute): string|false
public function parse(string $string, int $type = NumberFormatter::TYPE_DOUBLE, int &$offset = null): int|float|false
public function parseCurrency(string $string, string &$currency, int &$offset = null): float|false
public function setAttribute(int $attribute, int|float $value): bool
public function setPattern(string $pattern): bool
public function setSymbol(int $symbol, string $value): bool
public function setTextAttribute(int $attribute, string $value): bool
}

ΠŸΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ константы

Π’ΠΈΠΏΡ‹ форматирования

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ стили ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Ρ€Π΅ΠΆΠΈΠΌ форматирования Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ numfmt_create().

NumberFormatter::PATTERN_DECIMAL int
Π€ΠΎΡ€ΠΌΠ°Ρ‚ дСсятичных чисСл ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ.
NumberFormatter::DECIMAL int
Π€ΠΎΡ€ΠΌΠ°Ρ‚ дСсятичных чисСл.
NumberFormatter::DECIMAL_COMPACT_SHORT int
Π€ΠΎΡ€ΠΌΠ°Ρ‚ дСсятичных чисСл Π² ΠΊΡ€Π°Ρ‚ΠΊΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎΠΉ Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ: "23K", "45B". Π Π΅ΠΆΠΈΠΌ доступСн с PHP 8.5.0 ΠΈ ICU 56.
NumberFormatter::DECIMAL_COMPACT_LONG int
Π€ΠΎΡ€ΠΌΠ°Ρ‚ дСсятичных чисСл Π² Π΄Π»ΠΈΠ½Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎΠΉ Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ: "23 thousand", "45 billion". Π Π΅ΠΆΠΈΠΌ доступСн с PHP 8.5.0 ΠΈ ICU 56.
NumberFormatter::CURRENCY int
Π€ΠΎΡ€ΠΌΠ°Ρ‚ Π²Π°Π»ΡŽΡ‚Ρ‹.
NumberFormatter::CURRENCY_ISO int
Π€ΠΎΡ€ΠΌΠ°Ρ‚ Π²Π°Π»ΡŽΡ‚Ρ‹ ΠΏΠΎ стандарту ISO: "USD1.00". Π Π΅ΠΆΠΈΠΌ доступСн с PHP 8.5.0.
NumberFormatter::CURRENCY_PLURAL int
Π€ΠΎΡ€ΠΌΠ°Ρ‚ Π΄Π΅Π½Π΅ΠΆΠ½ΠΎΠΉ суммы со склонСниСм названия Π²Π°Π»ΡŽΡ‚Ρ‹ Π² СдинствСнном ΠΈΠ»ΠΈ мноТСствСнном числС: "1.00 US dollar" ΠΈ "3.00 US dollars". Π Π΅ΠΆΠΈΠΌ доступСн с PHP 8.5.0.
NumberFormatter::CASH_CURRENCY int
Π‘ΠΈΠΌΠ²ΠΎΠ» Π²Π°Π»ΡŽΡ‚Ρ‹ для Π½Π°Π»ΠΈΡ‡Π½Ρ‹Ρ…, Π±Π΅Π· Π΄Ρ€ΠΎΠ±Π½ΠΎΠΉ части: "NT$3" вмСсто "NT$3.23". Π Π΅ΠΆΠΈΠΌ доступСн с PHP 8.5.0 ΠΈ ICU 54.
NumberFormatter::CURRENCY_STANDARD int
Π€ΠΎΡ€ΠΌΠ°Ρ‚ Π΄Π΅Π½Π΅ΠΆΠ½ΠΎΠΉ суммы с символом Π²Π°Π»ΡŽΡ‚Ρ‹: "$1.00". ΠžΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ суммы выводятся Π½Π΅ Π² скобках, ΠΊΠ°ΠΊ Π² бухгалтСрском Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅, Π° со Π·Π½Π°ΠΊΠΎΠΌ минуса: "-$1.00". Π Π΅ΠΆΠΈΠΌ доступСн с PHP 8.5.0 ΠΈ ICU 56.
NumberFormatter::PERCENT int
ΠŸΡ€ΠΎΡ†Π΅Π½Ρ‚Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚.
NumberFormatter::SCIENTIFIC int
Научный Ρ„ΠΎΡ€ΠΌΠ°Ρ‚.
NumberFormatter::SPELLOUT int
Π€ΠΎΡ€ΠΌΠ°Ρ‚ ΠΏΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ прСдставлСния чисСл ΠΏΡ€ΠΎΠΏΠΈΡΡŒΡŽ: "ΠΎΠ΄Π½Π° тысяча Π΄Π΅Π²ΡΡ‚ΡŒΡΠΎΡ‚ дСвяносто ΠΏΡΡ‚ΡŒ" для числа 1995.
NumberFormatter::ORDINAL int
Π€ΠΎΡ€ΠΌΠ°Ρ‚ ΠΏΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ записи порядковых Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ…: "8th".
NumberFormatter::DURATION int
Π€ΠΎΡ€ΠΌΠ°Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ: "7:40" для числа 460 ΠΈΠ»ΠΈ "5 sec." для числа 5.
NumberFormatter::PATTERN_RULEBASED int
Π€ΠΎΡ€ΠΌΠ°Ρ‚ ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ Π½Π° основС ΠΏΡ€Π°Π²ΠΈΠ».
NumberFormatter::CURRENCY_ACCOUNTING int
БухгалтСрский Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π΄Π΅Π½Π΅ΠΆΠ½Ρ‹Ρ… сумм. ΠžΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ суммы выводятся Π² скобках, Π° Π½Π΅ со Π·Π½Π°ΠΊΠΎΠΌ минуса: ($3.00) вмСсто -$3.00. Π Π΅ΠΆΠΈΠΌ доступСн с PHP 7.4.1 ΠΈ ICU 53.
NumberFormatter::DEFAULT_STYLE int
Π€ΠΎΡ€ΠΌΠ°Ρ‚ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ… Ρ€Π΅Π³ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… настроСк.
NumberFormatter::IGNORE int
ПсСвдоним Ρ€Π΅ΠΆΠΈΠΌΠ° PATTERN_DECIMAL.

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ числового Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°

ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ способ Ρ€Π°Π·Π±ΠΎΡ€Π° чисСл Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ numfmt_parse() ΠΈΠ»ΠΈ форматирования чисСл Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ numfmt_format().

NumberFormatter::TYPE_DEFAULT int
АвтоопрСдСлСниС Ρ‚ΠΈΠΏΠ° значСния.
NumberFormatter::TYPE_INT32 int
Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Ρ€Π°Π·Π±ΠΎΡ€ значСния ΠΊΠ°ΠΊ 32-Π±ΠΈΡ‚Π½ΠΎΠ³ΠΎ Ρ†Π΅Π»ΠΎΠ³ΠΎ числа.
NumberFormatter::TYPE_INT64 int
Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Ρ€Π°Π·Π±ΠΎΡ€ значСния ΠΊΠ°ΠΊ 64-Π±ΠΈΡ‚Π½ΠΎΠ³ΠΎ Ρ†Π΅Π»ΠΎΠ³ΠΎ числа.
NumberFormatter::TYPE_DOUBLE int
Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Ρ€Π°Π·Π±ΠΎΡ€ значСния ΠΊΠ°ΠΊ числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ.
NumberFormatter::TYPE_CURRENCY int
Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Ρ€Π°Π·Π±ΠΎΡ€ значСния ΠΊΠ°ΠΊ Π΄Π΅Π½Π΅ΠΆΠ½ΠΎΠΉ суммы. Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ устарСл с PHP 8.3.0.

Атрибуты форматирования чисСл

Атрибуты ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ чисСл ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ функциями numfmt_get_attribute() ΠΈ numfmt_set_attribute().

NumberFormatter::PARSE_INT_ONLY int
Π Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ†Π΅Π»Ρ‹Π΅ числа.
NumberFormatter::GROUPING_USED int
Π Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒ Π³Ρ€ΡƒΠΏΠΏΡ‹ разрядов.
NumberFormatter::DECIMAL_ALWAYS_SHOWN int
Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΄Π΅ΡΡΡ‚ΠΈΡ‡Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ Π΄Π°ΠΆΠ΅ Π² числах Π±Π΅Π· Π΄Ρ€ΠΎΠ±Π½ΠΎΠΉ части.
NumberFormatter::MAX_INTEGER_DIGITS int
ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ разрядов Π² Ρ†Π΅Π»ΠΎΠΉ части числа.
NumberFormatter::MIN_INTEGER_DIGITS int
ΠœΠΈΠ½ΠΈΠΌΡƒΠΌ разрядов Π² Ρ†Π΅Π»ΠΎΠΉ части числа.
NumberFormatter::INTEGER_DIGITS int
ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ разрядов Π² Ρ†Π΅Π»ΠΎΠΉ части числа.
NumberFormatter::MAX_FRACTION_DIGITS int
ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ разрядов Π² Π΄Ρ€ΠΎΠ±Π½ΠΎΠΉ части числа.
NumberFormatter::MIN_FRACTION_DIGITS int
ΠœΠΈΠ½ΠΈΠΌΡƒΠΌ разрядов Π² Π΄Ρ€ΠΎΠ±Π½ΠΎΠΉ части числа.
NumberFormatter::FRACTION_DIGITS int
ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ разрядов Π² Π΄Ρ€ΠΎΠ±Π½ΠΎΠΉ части числа.
NumberFormatter::MULTIPLIER int
ΠœΠ½ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒ.
NumberFormatter::GROUPING_SIZE int
Π Π°Π·ΠΌΠ΅Ρ€ Π³Ρ€ΡƒΠΏΠΏΡ‹ разрядов.
NumberFormatter::ROUNDING_MODE int
Π Π΅ΠΆΠΈΠΌ округлСния.
NumberFormatter::ROUNDING_INCREMENT int
Π¨Π°Π³ округлСния.
NumberFormatter::FORMAT_WIDTH int
Π¨ΠΈΡ€ΠΈΠ½Π°, Π΄ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹Π²ΠΎΠ΄ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° format() дополняСтся ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ.
NumberFormatter::PADDING_POSITION int
ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ начинаСтся Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ описаниС констант дополнСния.
NumberFormatter::SECONDARY_GROUPING_SIZE int
Π Π°Π·ΠΌΠ΅Ρ€ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹ разрядов.
NumberFormatter::SIGNIFICANT_DIGITS_USED int
Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π½Π°Ρ‡Π°Ρ‰ΠΈΠ΅ Ρ†ΠΈΡ„Ρ€Ρ‹.
NumberFormatter::MIN_SIGNIFICANT_DIGITS int
ΠœΠΈΠ½ΠΈΠΌΡƒΠΌ Π·Π½Π°Ρ‡Π°Ρ‰ΠΈΡ… Ρ†ΠΈΡ„Ρ€.
NumberFormatter::MAX_SIGNIFICANT_DIGITS int
ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ Π·Π½Π°Ρ‡Π°Ρ‰ΠΈΡ… Ρ†ΠΈΡ„Ρ€.
NumberFormatter::LENIENT_PARSE int
Мягкий Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π°Π·Π±ΠΎΡ€Π° ΠΏΡ€ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ чисСл ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ Π½Π° основС ΠΏΡ€Π°Π²ΠΈΠ».

Атрибуты тСкстового Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° чисСл

Атрибуты ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ тСкстовый Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ чисСл ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ функциями numfmt_get_text_attribute() ΠΈ numfmt_set_text_attribute().

NumberFormatter::POSITIVE_PREFIX int
ΠŸΡ€Π΅Ρ„ΠΈΠΊΡ для ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл ΠΈ нуля.
NumberFormatter::POSITIVE_SUFFIX int
Буффикс для ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл ΠΈ нуля.
NumberFormatter::NEGATIVE_PREFIX int
ΠŸΡ€Π΅Ρ„ΠΈΠΊΡ для ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл.
NumberFormatter::NEGATIVE_SUFFIX int
Буффикс для ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл.
NumberFormatter::PADDING_CHARACTER int
Π‘ΠΈΠΌΠ²ΠΎΠ» для дополнСния Π΄ΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΡˆΠΈΡ€ΠΈΠ½Ρ‹.
NumberFormatter::CURRENCY_CODE int
Код Π²Π°Π»ΡŽΡ‚Ρ‹ ΠΏΠΎ стандарту ISO.
NumberFormatter::DEFAULT_RULESET int
Набор ΠΏΡ€Π°Π²ΠΈΠ» ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Атрибут доступСн Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для форматирования Π½Π° основС ΠΏΡ€Π°Π²ΠΈΠ».
NumberFormatter::PUBLIC_RULESETS int
ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΏΡ€Π°Π²ΠΈΠ». Атрибут доступСн Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для форматирования Π½Π° основС ΠΏΡ€Π°Π²ΠΈΠ». Атрибут доступСн Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния. ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΏΡ€Π°Π²ΠΈΠ» возвращаСтся Π² Π²ΠΈΠ΄Π΅ ΠΎΠ΄Π½ΠΎΠΉ строки, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° ΠΏΡ€Π°Π²ΠΈΠ» отдСляСтся символом ';' β€” Ρ‚ΠΎΡ‡ΠΊΠ° с запятой.

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° символов

Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹ форматирования чисСл для numfmt_get_symbol() ΠΈ numfmt_set_symbol().

NumberFormatter::DECIMAL_SEPARATOR_SYMBOL int
ДСсятичный Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ.
NumberFormatter::GROUPING_SEPARATOR_SYMBOL int
Π Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ Π³Ρ€ΡƒΠΏΠΏ.
NumberFormatter::PATTERN_SEPARATOR_SYMBOL int
Π Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ шаблонов.
NumberFormatter::PERCENT_SYMBOL int
Π—Π½Π°ΠΊ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π°.
NumberFormatter::ZERO_DIGIT_SYMBOL int
Ноль.
NumberFormatter::DIGIT_SYMBOL int
Π‘ΠΈΠΌΠ²ΠΎΠ» прСдставлСния Ρ†ΠΈΡ„Ρ€Ρ‹ Π² шаблонС.
NumberFormatter::MINUS_SIGN_SYMBOL int
Π—Π½Π°ΠΊ минус.
NumberFormatter::PLUS_SIGN_SYMBOL int
Π—Π½Π°ΠΊ плюс.
NumberFormatter::CURRENCY_SYMBOL int
Π‘ΠΈΠΌΠ²ΠΎΠ» Π²Π°Π»ΡŽΡ‚Ρ‹.
NumberFormatter::INTL_CURRENCY_SYMBOL int
ΠœΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½Ρ‹ΠΉ символ Π²Π°Π»ΡŽΡ‚Ρ‹.
NumberFormatter::MONETARY_SEPARATOR_SYMBOL int
ДСсятичный Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ Π² Π΄Π΅Π½Π΅ΠΆΠ½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°Ρ….
NumberFormatter::EXPONENTIAL_SYMBOL int
Π‘ΠΈΠΌΠ²ΠΎΠ» экспонСнты Π² Π½Π°ΡƒΡ‡Π½ΠΎΠΉ Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ.
NumberFormatter::PERMILL_SYMBOL int
Π‘ΠΈΠΌΠ²ΠΎΠ» ΠΏΡ€ΠΎΠΌΠΈΠ»Π»Π΅.
NumberFormatter::PAD_ESCAPE_SYMBOL int
Π‘ΠΈΠΌΠ²ΠΎΠ» экранирования заполнитСля.
NumberFormatter::INFINITY_SYMBOL int
Π—Π½Π°ΠΊ бСсконСчности.
NumberFormatter::NAN_SYMBOL int
Π‘ΠΈΠΌΠ²ΠΎΠ» нСчисла (Π°Π½Π³Π». Not-a-number, сокр. NaN).
NumberFormatter::SIGNIFICANT_DIGIT_SYMBOL int
Π‘ΠΈΠΌΠ²ΠΎΠ» Π·Π½Π°Ρ‡Π°Ρ‰Π΅ΠΉ Ρ†ΠΈΡ„Ρ€Ρ‹.
NumberFormatter::MONETARY_GROUPING_SEPARATOR_SYMBOL int
Π Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ Π³Ρ€ΡƒΠΏΠΏ для Π΄Π΅Π½Π΅ΠΆΠ½ΠΎΠ³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°.

Π Π΅ΠΆΠΈΠΌΡ‹ округлСния

Π Π΅ΠΆΠΈΠΌΡ‹ округлСния ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ numfmt_get_attribute() ΠΈ numfmt_set_attribute() с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ NumberFormatter::ROUNDING_MODE.

NumberFormatter::ROUND_AWAY_FROM_ZERO
ПсСвдоним константы NumberFormatter::ROUND_UP.
NumberFormatter::ROUND_CEILING int
ΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ Π² сторону ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ бСсконСчности.
NumberFormatter::ROUND_DOWN int
ΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ ΠΊ ΠΌΠ΅Π½ΡŒΡˆΠ΅ΠΌΡƒ ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ числу.
NumberFormatter::ROUND_FLOOR int
ΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ Π² сторону ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ бСсконСчности.
NumberFormatter::ROUND_HALFDOWN int
ΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ ΠΊ Π±Π»ΠΈΠΆΠ°ΠΉΡˆΠ΅ΠΌΡƒ числу; ΠΏΡ€ΠΈ Ρ€Π°Π²Π½ΠΎΠΌ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ β€” ΠΊ ΠΌΠ΅Π½ΡŒΡˆΠ΅ΠΌΡƒ ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ.
NumberFormatter::ROUND_HALFEVEN int
ΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ ΠΊ Π±Π»ΠΈΠΆΠ°ΠΉΡˆΠ΅ΠΌΡƒ числу; ΠΏΡ€ΠΈ Ρ€Π°Π²Π½ΠΎΠΌ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ β€” ΠΊ Π±Π»ΠΈΠΆΠ°ΠΉΡˆΠ΅ΠΌΡƒ Ρ‡Ρ‘Ρ‚Π½ΠΎΠΌΡƒ.
NumberFormatter::ROUND_HALFODD
ΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ ΠΊ Π±Π»ΠΈΠΆΠ°ΠΉΡˆΠ΅ΠΌΡƒ Π½Π΅Ρ‡Ρ‘Ρ‚Π½ΠΎΠΌΡƒ числу.
NumberFormatter::ROUND_HALFUP int
ΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ ΠΊ Π±Π»ΠΈΠΆΠ°ΠΉΡˆΠ΅ΠΌΡƒ числу; ΠΏΡ€ΠΈ Ρ€Π°Π²Π½ΠΎΠΌ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ β€” ΠΊ Π±ΠΎΠ»ΡŒΡˆΠ΅ΠΌΡƒ ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ.
NumberFormatter::ROUND_TOWARD_ZERO
ПсСвдоним константы NumberFormatter::ROUND_DOWN.
NumberFormatter::ROUND_UP int
ΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ ΠΊ Π±ΠΎΠ»ΡŒΡˆΠ΅ΠΌΡƒ ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ числу.

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ дополнСния

ЗначСния ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ дополнСния ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ numfmt_get_attribute() ΠΈ numfmt_set_attribute() с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ NumberFormatter::PADDING_POSITION.

NumberFormatter::PAD_AFTER_PREFIX int
Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹ дополнСния Π²ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ послС прСфикса.
NumberFormatter::PAD_AFTER_SUFFIX int
Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹ дополнСния Π²ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ послС суффикса.
NumberFormatter::PAD_BEFORE_PREFIX int
Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹ дополнСния Π²ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅Π΄ прСфиксом.
NumberFormatter::PAD_BEFORE_SUFFIX int
Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹ дополнСния Π²ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅Π΄ суффиксом.

Бписок измСнСний

ВСрсия ОписаниС
8.5.0 Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ константы NumberFormatter::DECIMAL_COMPACT_SHORT, NumberFormatter::DECIMAL_COMPACT_LONG, NumberFormatter::CURRENCY_ISO, NumberFormatter::CURRENCY_PLURAL, NumberFormatter::CASH_CURRENCY, NumberFormatter::CURRENCY_STANDARD.
8.4.0 ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρ‹ класса стали Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

  • NumberFormatter::create β€” Π‘ΠΎΠ·Π΄Π°Ρ‘Ρ‚ срСдство форматирования чисСл
  • NumberFormatter::format β€” Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ число
  • NumberFormatter::formatCurrency β€” Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Π°Π»ΡŽΡ‚Ρ‹
  • NumberFormatter::getAttribute β€” ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚
  • NumberFormatter::getErrorCode β€” ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ послСдний ΠΊΠΎΠ΄ ошибки срСдства форматирования
  • NumberFormatter::getErrorMessage β€” ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ послСднСС сообщСниС ΠΎΠ± ошибкС срСдства форматирования
  • NumberFormatter::getLocale β€” ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ локаль срСдства форматирования
  • NumberFormatter::getPattern β€” ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ шаблон срСдства форматирования
  • NumberFormatter::getSymbol β€” ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ символа
  • NumberFormatter::getTextAttribute β€” ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ тСкстовый Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚
  • NumberFormatter::parse β€” Π Π°Π·Π±ΠΈΡ€Π°Π΅Ρ‚ число
  • NumberFormatter::parseCurrency β€” Π Π°Π·Π±ΠΈΡ€Π°Π΅Ρ‚ Π½ΠΎΠΌΠ΅Ρ€ Π²Π°Π»ΡŽΡ‚Ρ‹
  • NumberFormatter::setAttribute β€” УстанавливаСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° форматирования чисСл
  • NumberFormatter::setPattern β€” УстанавливаСт шаблон срСдства форматирования
  • NumberFormatter::setSymbol β€” УстанавливаСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ символа
  • NumberFormatter::setTextAttribute β€” УстанавливаСт тСкстовый Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚
οΌ‹Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ 5 notes

up
50
giorgio dot liscio at email dot it ΒΆ
15 years ago
this class seems to be painful: it is not, formatting and parsing are highly customizable, but what you probably need is really simple:

if you want to localize a number use:

<?php
$a = new \NumberFormatter("it-IT", \NumberFormatter::DECIMAL);
echo $a->format(12345.12345) . "<br>"; // outputs 12.345,12
$a->setAttribute(\NumberFormatter::MIN_FRACTION_DIGITS, 0);
$a->setAttribute(\NumberFormatter::MAX_FRACTION_DIGITS, 100); // by default some locales got max 2 fraction digits, that is probably not what you want
echo $a->format(12345.12345) . "<br>"; // outputs 12.345,12345
?>

if you want to print money use:

<?php
$a = new \NumberFormatter("it-IT", \NumberFormatter::CURRENCY);
echo $a->format(12345.12345) . "<br>"; // outputs €12.345,12
?>

if you have money data stored as (for example) US dollars and you want to print them using the it-IT notation, you need to use

<?php
$a = new \NumberFormatter("it-IT", \NumberFormatter::CURRENCY);
echo $a->formatCurrency(12345, "USD") . "<br>"; // outputs $ 12.345,00 and it is formatted using the italian notation (comma as decimal separator)
?>

another useful example about currency (how to obtain the currency name by a locale string):

<?php
$frontEndFormatter = new \NumberFormatter("it-IT", \NumberFormatter::CURRENCY);
$adminFormatter = new \NumberFormatter("en-US", \NumberFormatter::CURRENCY);
$symbol = $adminFormatter->getSymbol(\NumberFormatter::INTL_CURRENCY_SYMBOL); // got USD
echo $frontEndFormatter->formatCurrency(12345.12345,  $symbol) . "<br>";
?>
up
6
jimbo2150 at gmail dot com ΒΆ
3 years ago
The NumberFormatter class can be used to convert integer numbers to Roman numerals without a custom function using an array of symbols and associated values:

<?php

function intToRomanNumeral(int $num) {
    static $nf = new NumberFormatter('@numbers=roman', NumberFormatter::DECIMAL);
    return $nf->format($num);
}

echo intToRomanNumeral(2); // II

echo intToRomanNumeral(5); // V

echo intToRomanNumeral(10); // X

echo intToRomanNumeral(50); // L

echo intToRomanNumeral(57); // LVII
echo intToRomanNumeral(58); // LVIII

echo intToRomanNumeral(100); // C

echo intToRomanNumeral(150); // CL

echo intToRomanNumeral(1000); // M

echo intToRomanNumeral(10000); // ↂ

?>
up
3
stan at dragnev dot ca ΒΆ
5 years ago
Here's an example of how to use PATTERN_DECIMAL to print a number with two fraction digits, use () for negative numbers and pad to five characters to the left of the decimal point, using spaces as the padding character:

<?php

$fmt = new NumberFormatter("en-CA", NumberFormatter::PATTERN_DECIMAL, "* #####.00 ;(* #####.00)");
echo $fmt->format(-45.1);

// Outputs: "  (45.10)"

?>

Note that the ; in the pattern denotes the beginning of a subpattern, which is used for negative numbers. Hence the brackets around the pattern after the semicolon.
up
3
sudheer at binaryvibes dot co dot in ΒΆ
15 years ago
Sample script to print number in English.

<?php
$f = new NumberFormatter("en", NumberFormatter::SPELLOUT);
echo $f->format(123456);

?>

Produces the result:
one hundred twenty-three thousand four hundred fifty-six
up
0
Einenlum ΒΆ
2 years ago
Be aware that (at least with the locale 'fr-FR') NumberFormatter doesn't use spaces. It doesn't even use non breakable spaces (NBSP). It uses narrow non breakable spaces (NNBSP). This broke my tests.

<?php

$formatter = new NumberFormatter(
    'fr-FR',
    NumberFormatter::DEFAULT_STYLE
);

$value = $formatter->format(100_000); // '100β€―000'

// If you want to replace narrow non breakable spaces with non breakable spaces:

str_replace("\u{202F}", "\u{00A0}", $value);

// If you want to replace it with a normal space

str_replace("\u{202F}", " ", $value);