Intl.NumberFormat
=================

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

Интерактивный пример
--------------------

Constructor
-----------

`Intl.NumberFormat()` (en-US)

Создаёт новый объект `NumberFormat`.

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

`Intl.NumberFormat.supportedLocalesOf()`

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

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

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

`Intl.NumberFormat.prototype.constructor`

Функция-конструктор, создающая экземпляр объекта. Для экземпляров `Intl.NumberFormat` начальным значением является конструктор `Intl.NumberFormat` (en-US).

`Intl.NumberFormat.prototype[@@toStringTag]`

Начальным значением свойства `@@toStringTag` является строка `"Intl.NumberFormat"`. Это свойство используется в `Object.prototype.toString()`.

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

`Intl.NumberFormat.prototype.format()`

Функция-геттер, которая форматирует число в соответствии с локалью и настройками форматирования этого объекта `Intl.NumberFormat`.

`Intl.NumberFormat.prototype.formatRange()` (en-US)

Функция-геттер, которая форматирует диапазон чисел в соответствии с локалью и настройками форматирования объекта `Intl.NumberFormat`, метод которого был вызван.

`Intl.NumberFormat.prototype.formatRangeToParts()` (en-US)

Возвращает `массив` объектов, представляющих диапазон числовых строк по частям, которые можно использовать для пользовательского форматирования с учетом локали.

`Intl.NumberFormat.prototype.formatToParts()` (en-US)

Возвращает `массив` объектов, представляющих части числа, которые могут быть использованы для пользовательского форматирования с учётом локали.

`Intl.NumberFormat.prototype.resolvedOptions()`

Возвращает новый объект со свойствами, представляющими локаль и настройки форматирования, определённые во время инициализации объекта.

Примеры
-------

### Использование `NumberFormat`

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


```js
const number = 3500;

console.log(new Intl.NumberFormat().format(number));
// '3,500' в локали US English
```

### Использование параметра `locales`

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


```js
const 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`:


```js
const 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

// Форматирование с единицами измерения
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()` constructor (en-US).

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

| Specification |
| --- |
| ECMAScript Internationalization API Specification # numberformat-objects |

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

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

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

* Полифил `Intl.NumberFormat` в FormatJS
* `Intl`