Intl.NumberFormat

Сводка

Объект 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' в этой спецификации.
Стандарт Изначальное определение.

Совместимость с браузерами

Update compatibility data on GitHub
КомпьютерыМобильныеServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidFirefox для AndroidOpera для AndroidSafari on iOSSamsung InternetNode.js
NumberFormatChrome Полная поддержка 24Edge Полная поддержка 12Firefox Полная поддержка 29IE Полная поддержка 11Opera Полная поддержка 15Safari Полная поддержка 10WebView Android Полная поддержка ДаChrome Android Полная поддержка 26Firefox Android Полная поддержка 56Opera Android Полная поддержка 14Safari iOS Полная поддержка 10Samsung Internet Android Полная поддержка 1.5nodejs ?
formatChrome Полная поддержка 24Edge Полная поддержка 12Firefox Полная поддержка 29IE Полная поддержка 11Opera Полная поддержка 15Safari Полная поддержка 10WebView Android Полная поддержка ДаChrome Android Полная поддержка 26Firefox Android Полная поддержка 56Opera Android ? Safari iOS Полная поддержка 10Samsung Internet Android Полная поддержка 1.5nodejs ?
formatToParts
Экспериментальная
Chrome Полная поддержка 64Edge Полная поддержка 12Firefox Полная поддержка 58IE Полная поддержка 11Opera Полная поддержка 51Safari Полная поддержка 13WebView Android Полная поддержка 64Chrome Android Полная поддержка 64Firefox Android Полная поддержка 58Opera Android ? Safari iOS Полная поддержка 13Samsung Internet Android Полная поддержка 9.0nodejs ?
prototypeChrome Полная поддержка 24Edge Полная поддержка 12Firefox Полная поддержка 29IE Полная поддержка 11Opera Полная поддержка 15Safari Полная поддержка 10WebView Android Полная поддержка ДаChrome Android Полная поддержка 26Firefox Android Полная поддержка 56Opera Android ? Safari iOS Полная поддержка 10Samsung Internet Android Полная поддержка 1.5nodejs ?
resolvedOptionsChrome Полная поддержка 24Edge Полная поддержка 12Firefox Полная поддержка 29IE Полная поддержка 11Opera Полная поддержка 15Safari Полная поддержка 10WebView Android Полная поддержка ДаChrome Android Полная поддержка 26Firefox Android Полная поддержка 56Opera Android ? Safari iOS Полная поддержка 10Samsung Internet Android Полная поддержка 1.5nodejs ?
supportedLocalesOfChrome Полная поддержка 24Edge Полная поддержка 12Firefox Полная поддержка 29IE Полная поддержка 11Opera Полная поддержка 15Safari Полная поддержка 10WebView Android Полная поддержка ДаChrome Android Полная поддержка 26Firefox Android Полная поддержка 56Opera Android ? Safari iOS Полная поддержка 10Samsung Internet Android Полная поддержка 1.5nodejs ?

Легенда

Полная поддержка  
Полная поддержка
Совместимость неизвестна  
Совместимость неизвестна
Экспериментальная. Ожидаемое поведение может измениться в будущем.
Экспериментальная. Ожидаемое поведение может измениться в будущем.

Смотрите также