Spec-Zone.ru › JavaScript

Intl.NumberFormat

Базовый уровень Широко доступен

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с сентября 2017 года.

Объект Intl.NumberFormat обеспечивает форматирование чисел с учетом языка.

Попробуйте

const number = 123456.789;

console.log(
  new Intl.NumberFormat("de-DE", { style: "currency", currency: "EUR" }).format(
    number,
  ),
);
// Expected output: "123.456,79 €"

// The Japanese yen doesn't use a minor unit
console.log(
  new Intl.NumberFormat("ja-JP", { style: "currency", currency: "JPY" }).format(
    number,
  ),
);
// Expected output: "¥123,457"

// Limit to three significant digits
console.log(
  new Intl.NumberFormat("en-IN", { maximumSignificantDigits: 3 }).format(
    number,
  ),
);
// Expected output: "1,23,000"

Конструктор

Intl.NumberFormat()
Создает новый объект NumberFormat.

Статические методы

Intl.NumberFormat.supportedLocalesOf()
Возвращает массив, содержащий те из предоставленных локалей, которые поддерживаются без необходимости возврата к локали по умолчанию среды выполнения.

Свойства экземпляра

Эти свойства определены в Intl.NumberFormat.prototype и используются всеми экземплярами Intl.NumberFormat.

Intl.NumberFormat.prototype.constructor
Функция-конструктор, создавшая объект-экземпляр. Для экземпляров Intl.NumberFormat начальным значением является конструктор Intl.NumberFormat.
Intl.NumberFormat.prototype[Symbol.toStringTag]
Начальное значение свойства [Symbol.toStringTag] — это строка "Intl.NumberFormat". Это свойство используется в Object.prototype.toString().

Методы экземпляра

Intl.NumberFormat.prototype.format()
Функция-геттер, которая форматирует число в соответствии с локалью и параметрами форматирования этого объекта Intl.NumberFormat.
Intl.NumberFormat.prototype.formatRange()
Функция-геттер, которая форматирует диапазон чисел в соответствии с локалью и параметрами форматирования объекта Intl.NumberFormat, из которого вызывается метод.
Intl.NumberFormat.prototype.formatRangeToParts()
Возвращает Array объектов, представляющих диапазон числовых строк по частям, которые можно использовать для пользовательского форматирования с учетом локали.
Intl.NumberFormat.prototype.formatToParts()
Возвращает Array объектов, представляющих числовую строку по частям, которые можно использовать для пользовательского форматирования с учетом локали.
Intl.NumberFormat.prototype.resolvedOptions()
Возвращает новый объект со свойствами, отражающими локаль и параметры сопоставления, рассчитанные при инициализации объекта.

Примеры

Базовое использование

При базовом использовании без указания локали возвращается отформатированная строка в локали по умолчанию и с настройками по умолчанию.

const number = 3500;

console.log(new Intl.NumberFormat().format(number));
// '3,500' if in US English locale

Использование локалей

Этот пример показывает некоторые различия в локализованных форматах чисел. Чтобы получить формат языка, используемого в пользовательском интерфейсе вашего приложения, убедитесь, что вы указали этот язык (и, возможно, некоторые резервные языки), используя аргумент locales:

const number = 123456.789;

// German uses comma as decimal separator and period for thousands
console.log(new Intl.NumberFormat("de-DE").format(number));
// 123.456,789

// Arabic in most Arabic speaking countries uses real Arabic digits
console.log(new Intl.NumberFormat("ar-EG").format(number));
// ١٢٣٤٥٦٫٧٨٩

// India uses thousands/lakh/crore separators
console.log(new Intl.NumberFormat("en-IN").format(number));
// 1,23,456.789

// the nu extension key requests a numbering system, e.g. Chinese decimal
console.log(new Intl.NumberFormat("zh-Hans-CN-u-nu-hanidec").format(number));
// 一二三,四五六.七八九

// when requesting a language that may not be supported, such as
// Balinese, include a fallback language, in this case Indonesian
console.log(new Intl.NumberFormat(["ban", "id"]).format(number));
// 123.456,789

Использование опций

Результаты можно настроить с помощью аргумента options:

const number = 123456.789;

// request a currency format
console.log(
  new Intl.NumberFormat("de-DE", { style: "currency", currency: "EUR" }).format(
    number,
  ),
);
// 123.456,79 €

// the Japanese yen doesn't use a minor unit
console.log(
  new Intl.NumberFormat("ja-JP", { style: "currency", currency: "JPY" }).format(
    number,
  ),
);
// ¥123,457

// limit to three significant digits
console.log(
  new Intl.NumberFormat("en-IN", { maximumSignificantDigits: 3 }).format(
    number,
  ),
);
// 1,23,000

// Formatting with units
console.log(
  new Intl.NumberFormat("pt-PT", {
    style: "unit",
    unit: "kilometer-per-hour",
  }).format(50),
);
// 50 km/h

console.log(
  (16).toLocaleString("en-GB", {
    style: "unit",
    unit: "liter",
    unitDisplay: "long",
  }),
);
// 16 litres

Полный список опций см. на странице конструктора Intl.NumberFormat().

Спецификации

Спецификация
ECMAScript® 2027 Internationalization API Specification
# numberformat-objects

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

Десктопные Мобильные Серверные
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet WebView Android WebView on iOS Bun Deno Node.js
NumberFormat
24
12
29
15
10
25
56
14
10
1.5
4.4
10
1.0.0
1.8
0.12.0До версии 13.0.0 по умолчанию доступны только данные локали для en-US. Дополнительную информацию см. в конструкторе NumberFormat().
NumberFormat
24
12
29
15
10
25
56
14
10
1.5
4.4
10
1.0.0
1.8
0.12.0
format
24
12До Edge 18 числа округляются до 15 десятичных знаков. Например, new Intl.NumberFormat('en-US').format(1000000000000005) возвращает "1,000,000,000,000,010".
29
15
10
25
56
14
10
1.5
4.4
10
1.0.0
1.8
0.12.0До версии 13.0.0 по умолчанию доступны только данные локали для en-US. Дополнительную информацию см. в конструкторе NumberFormat().
formatRange
106
106
116
92
15.4
106
116
72
15.4
20.0
106
15.4
1.0.3
No
19.0.0
formatRangeToParts
106
106
116
92
15.4
106
116
72
15.4
20.0
106
15.4
1.0.3
No
19.0.0
formatToParts
64
12
58
51
13
64
58
47
13
9.0
64
13
1.0.0
1.8
10.0.0До версии 13.0.0 по умолчанию доступны только данные локали для en-US. Дополнительную информацию см. в конструкторе NumberFormat().
resolvedOptions
24
12
29
15
10
25
56
14
10
1.5
4.4
10
1.0.0
1.8
0.12.0До версии 13.0.0 по умолчанию доступны только данные локали для en-US. Дополнительную информацию см. в конструкторе NumberFormat().
supportedLocalesOf
24
12
29
15
10
25
56
14
10
1.5
4.4
10
1.0.0
1.8
13.0.0
0.12.0–13.0.0До версии 13.0.0 по умолчанию доступны только данные локали для en-US. Чтобы сделать полные данные ICU (локали) доступными до версии 13, см. документацию Node.js по опции --with-intl и способам предоставления данных.

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

  • Полифил Intl.NumberFormat в FormatJS
  • Intl
  • Number.prototype.toLocaleString()

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API