Сводка
Объект Intl.NumberFormat является конструктором объектов, включающих языко-зависимое форматирование чисел.
Синтаксис
new Intl.NumberFormat([locales[, options]])
Intl.NumberFormat.call(this[, locales[, options]])
Параметры
locales-
Необязательный параметр. Строка с языковой меткой BCP 47, либо массив таких строк. Описание общей формы и интерпретации аргумента
localesсмотрите на странице, посвящённой объекту Intl. Разрешены следующие ключи расширения Unicode:nu- Используемая система нумерации. Возможные значения включают в себя:
"arab","arabext","bali","beng","deva","fullwide","gujr","guru","hanidec","khmr","knda","laoo","latn","limb","mlym","mong","mymr","orya","tamldec","telu","thai","tibt".
options-
Необязательный параметр. Объект с некоторыми или всеми из следующих свойств:
localeMatcher- Используемый алгоритм сопоставления локалей. Возможными значениями являются
"lookup"и"best fit"; значением по умолчанию является"best fit". Информацию по этой опции смотрите на странице, посвящённой объекту Intl. style- Используемый стиль форматирования. Возможными значениями являются
"decimal"для простого форматирования числа,"currency"для форматирования валюты и"percent"для форматирования процентов; значением по умолчанию является"decimal". currency- Валюта, используемая при форматировании валют. Возможными значениями являются коды валют ISO 4217, например,
"USD"для доллара США,"EUR"для евро или"CNY"для китайского юаня — смотрите список кодов текущих валют и денежных средств. Свойство не имеет значения по умолчанию; если свойствоstyleравно"currency", свойствоcurrencyтакже должно присутствовать. currencyDisplay- Определяет, как отображать валюту при форматировании валют. Возможными значениями являются
"symbol"для использования локализованного символа валюты, например € для евро,"code"для использования кода валюты ISO,"name"для использования локализованного названия валюты, например"доллар США"для доллара; значением по умолчанию является"symbol". useGrouping- Определяет, использовать ли разделители групп разрядов, например, разделители тысяч или тысяч/лакх/крор. Возможными значениями являются
trueиfalse; значением по умолчанию являетсяtrue.
Следующие свойства разбиваются на две группы:
minimumIntegerDigits,minimumFractionDigitsиmaximumFractionDigitsвходят в одну группу, аminimumSignificantDigitsиmaximumSignificantDigits— в другую. Если определено хотя бы одно свойство из второй группы, свойства из второй первой группы будут проигнорированы.minimumIntegerDigits- Минимальное используемое количество цифр целой части числа. Возможными значениями являются значения от 1 до 21; значением по умолчанию является 1.
minimumFractionDigits- Минимальное используемое количество цифр дробной части числа. Возможными значениями являются значения от 0 до 20; значением по умолчанию для простого и процентного форматирования является 0; значением по умолчанию для форматирования валюты является число цифр младших единиц, определяемое в списке кодов валют ISO 4217 (2, если данный список не предоставляет такой информации).
maximumFractionDigits- Максимальное используемое количество цифр дробной части числа. Возможными значениями являются значения от 0 до 20; значением по умолчанию для простого форматирования является наибольшее значение из
minimumFractionDigitsи 3; значением по умолчанию для форматирования валюты является число цифр младших единиц, определяемое в списке кодов валют ISO 4217 (2, если данный список не предоставляет такой информации); значением по умолчанию для процентного форматирования является наибольшее значение изminimumFractionDigitsи 0. minimumSignificantDigits- Минимальное используемое количество значащих цифр числа. Возможными значениями являются значения от 1 до 21; значением по умолчанию является 1.
maximumSignificantDigits- Максимальное используемое количество значащих цифр числа. Возможными значениями являются значения от 1 до 21; значением по умолчанию является
minimumSignificantDigits.
Описание
Свойства
Intl.NumberFormat.prototype- Позволяет добавлять свойства ко всем объектам.
Методы
Intl.NumberFormat.supportedLocalesOf()- Возвращает массив, содержащий те из предоставленных локалей, которые поддерживаются без отката к локали по умолчанию среды выполнения.
Экземпляры объекта NumberFormat
Свойства
Экземпляры NumberFormat наследуют следующие свойства из своего прототипа:
Intl.NumberFormat.prototype.constructor- Ссылка на
Intl.NumberFormat. Intl.NumberFormat.prototype.format- Геттер; возвращает функцию, форматирующую число согласно локали и опциям форматирования этого объекта
NumberFormat.
Методы
Экземпляры NumberFormat наследуют следующие методы из своего прототипа:
Intl.NumberFormat.prototype.resolvedOptions()- Возвращает новый объект со свойствами, отражающими локаль и опции сравнения, вычисленные при инициализации объекта.
Примеры
Пример: базовое использование
При базовом использовании без определения локали возвращается строка, отформатированная с помощью локали по умолчанию с опциями по умолчанию.
var number = 3500; console.log(new Intl.NumberFormat().format(number)); // → '3,500' в локали US English
Пример: использование аргумента locales
Этот пример показывает некоторые локализованные числовые форматы. Для получения формата языка, используемого в пользовательском интерфейсе вашего приложения, убедитесь, что вы указали этот язык (и, возможно, несколько запасных языков) через аргумент locales:
var number = 123456.789;
// В Германии в качестве разделителя целой и дробной части используется запятая, а в качестве разделителя разрядов - точка
console.log(new Intl.NumberFormat('de-DE').format(number));
// → 123.456,789
// В России в качестве разделителя целой и дробной части используется запятая, а в качестве разделителя разрядов - пробел
console.log(new Intl.NumberFormat('ru-RU').format(number));
// → 123 456,789
// В большинстве арабоговорящих стран используют настоящие арабские цифры
console.log(new Intl.NumberFormat('ar-EG').format(number));
// → ١٢٣٤٥٦٫٧٨٩
// В Индии используют разделители для тысяч/лакх/крор
console.log(new Intl.NumberFormat('en-IN').format(number));
// → 1,23,456.789
// Ключ расширения nu запрашивает систему нумерации, например, китайскую десятичную
console.log(new Intl.NumberFormat('zh-Hans-CN-u-nu-hanidec').format(number));
// → 一二三,四五六.七八九
// Если запрашиваемый язык может не поддерживаться, например
// балийский, откатываемся на запасной язык, в данном случае индонезийский
console.log(new Intl.NumberFormat(['ban', 'id']).format(number));
// → 123.456,789
Пример: использование аргумента options
Результат может быть настроен с помощью аргумента options:
var number = 123456.789;
// Запрашиваем формат валюты
console.log(new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(number));
// → 123.456,79 €
console.log(new Intl.NumberFormat('ru-RU', { style: 'currency', currency: 'RUB' }).format(number));
// → 123 456,79 руб.
// Японская йена не использует младшие единицы
console.log(new Intl.NumberFormat('ja-JP', { style: 'currency', currency: 'JPY' }).format(number))
// → ¥123,457
// Ограничиваем до трёх значащих цифр
console.log(new Intl.NumberFormat('en-IN', { maximumSignificantDigits: 3 }).format(number));
// → 1,23,000
Спецификации
| Спецификация | Статус | Комментарии |
|---|---|---|
| ECMAScript Internationalization API 1.0 (ECMA-402) Определение 'Intl.NumberFormat' в этой спецификации. |
Стандарт | Изначальное определение. |
Совместимость с браузерами
| Возможность | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
|---|---|---|---|---|---|
| Базовая поддержка | 24 | 29 (29) | 11 | 15 | Не поддерживается |
| Возможность | Android | Chrome для Android | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| Базовая поддержка | Не поддерживается | 26 |
Не поддерживается bug 864843 |
Не поддерживается | Не поддерживается | Не поддерживается |