--- title: Intl.NumberFormat slug: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat tags: - Internationalization - JavaScript - NumberFormat translation_of: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat ---
Объект Intl.NumberFormat является конструктором объектов, включающих языка-зависимое форматирование чисел.
new Intl.NumberFormat([locales[, options]])
Intl.NumberFormat.call(this[, locales[, options]])
localesНеобязательный параметр. Строка с языковой меткой BCP 47, либо массив таких строк. Описание общей формы и интерпретации аргумента locales смотрите на {{jsxref("Global_Objects/Intl", "странице, посвящённой объекту Intl", "#Locale_identification_and_negotiation", 1)}}. Разрешены следующие ключи расширения 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". Информацию по этой опции смотрите на {{jsxref("Global_Objects/Intl", "странице, посвящённой объекту Intl", "#Locale_negotiation", 1)}}.style"decimal" для простого форматирования числа, "currency" для форматирования валюты и "percent" для форматирования процентов; значением по умолчанию является "decimal".currency"USD" для доллара США, "EUR" для евро или "CNY" для китайского юаня — смотрите список кодов текущих валют и денежных средств. Свойство не имеет значения по умолчанию; если свойство style равно "currency", свойство currency также должно присутствовать.currencyDisplay"symbol" для использования локализованного символа валюты, например € для евро, "code" для использования кода валюты ISO, "name" для использования локализованного названия валюты, например "доллар США" для доллара; значением по умолчанию является "symbol".useGroupingtrue и false; значением по умолчанию является true.Следующие свойства разбиваются на две группы: minimumIntegerDigits, minimumFractionDigits и maximumFractionDigits входят в одну группу, а minimumSignificantDigits и maximumSignificantDigits — в другую. Если определено хотя бы одно свойство из второй группы, свойства первой группы будут проигнорированы.
minimumIntegerDigitsminimumFractionDigitsmaximumFractionDigitsminimumFractionDigits и 3; значением по умолчанию для форматирования валюты является число цифр младших единиц, определяемое в списке кодов валют ISO 4217 (2, если данный список не предоставляет такой информации); значением по умолчанию для процентного форматирования является наибольшее значение из minimumFractionDigits и 0.minimumSignificantDigitsmaximumSignificantDigitsminimumSignificantDigits.NumberFormatЭкземпляры NumberFormat наследуют следующие свойства из своего прототипа:
Экземпляры NumberFormat наследуют следующие методы из своего прототипа:
При базовом использовании без определения локали возвращается строка, отформатированная с помощью локали по умолчанию с опциями по умолчанию.
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
{{Compat}}