JavaScript метод Number.prototype.toLocaleString()

Определение и применение

JavaScript метод toLocaleString() преобразует числовое значение (объект Number) в строковое и возвращает это значение, используя текущий или указанный языковой стандарт.

Проверьте поведение в редактируемом примере.

Поддержка браузерами

Спецификации: ecma262, ecma402

Поддерживается во всех основных браузерах с 2015 года.

Показать браузеры
Совместимостьjavascript.builtins.Number.toLocaleString
ВозможностьКомпьютерыМобильные
ChromeEdgeFirefoxOperaSafariChrome AndroidFirefox for AndroidOpera AndroidSafari on iOSSamsung BrowserWebView AndroidWebView on iOS
toLocaleString✓1✓12✓1✓4✓1✓18✓4✓10.1✓1✓1.0✓4.4✓1
locales parameter✓24✓12✓29✓15✓10✓26✓56✓14✓10✓1.5✓4.4✓10
options parameter✓24✓12✓29✓15✓10✓26✓56✓14✓10✓1.5✓4.4✓10

поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31

JavaScript синтаксис

JavaScript
// используя текущий языковой стандарт
num.toLocaleString();

// используя указанный языковой стандарт
num.toLocaleString( locales );

// используя указанный языковой стандарт с дополнительными настройками
num.toLocaleString( locales, options );

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

ECMAScript: Number.prototype.toLocaleString()

Значения параметров

Number: справочные сведения
Параметр Описание
locales Параметр должен быть строкой, содержащей языковой тег BCP 47, или массивом таких языковых тегов. Если параметр не указан или не определен, используется языковой стандарт среды выполнения JavaScript по умолчанию. При указании нескольких строк языкового стандарта следует перечислять их в порядке убывания приоритета, чтобы первая запись была предпочитаемым языковым стандартом. Необязательный параметр.
Языковой тег BCP 47 определяет язык и минимально содержит код основного языка. В своем наиболее распространенном виде он может содержать по порядку: код языка, код скрипта и код страны или региона, разделенные дефисами. Хотя тег не чувствителен к регистру, рекомендуется писать код скрипта с заглавной первой буквы, верхний регистр для кода страны и региона, а строчный регистр для всего остального.
options Необязательный параметр, который содержит объект со свойствами, определяющими параметры форматирования:

  • localeMatcher - используемый алгоритм сопоставления. Возможные значения "lookup" (следует алгоритму поиска, указанному в BCP 47) и "best fit" ( позволяет среде выполнения предоставить языковой стандарт, который, возможно, больше подходит для запроса, чем результат алгоритма "lookup"). Значение по умолчанию "best fit".
  • style - используемый стиль форматирования. Возможные значения: "decimal" для простого форматирования числа, "currency" для форматирования денежных единиц и "percent" для форматирования процентов и "unit" для единиц измерения (требует unit). Значение по умолчанию "decimal".
  • currency - денежная единица, используемая в форматировании. Возможными значениями являются коды валют ISO 4217, например, такие как "USD" для доллара США, или "EUR" для евро. Полный перечень кодов ISO 4217 доступен по ссылке. Значение по умолчанию для свойства отсутствует.
  • currencyDisplay - определяет как отображать денежные единицы (в символьном или текстовом виде). Возможными значениями являются "symbol", чтобы использовать символ валюты, например €, "narrowSymbol" для краткого символа, значение "code" определяет, что будет использован код валюты по стандарту ISO, а значение "name", что будет использовано название валюты, например "dollar". Значение по умолчанию "symbol".
  • useGrouping — группировка разрядов: "auto", "always", "min2" или false; true соответствует "always". По умолчанию "min2" для compact, иначе "auto".

Настройки дробных и значащих цифр взаимодействуют через roundingPriority. При стандартной записи и "auto" заданные значащие цифры имеют приоритет над дробными. minimumIntegerDigits применяется независимо; для compact действуют особые значения по умолчанию.

  • minimumIntegerDigits - определяет минимальное количество целых цифр для использования. Возможные значения от 1 до 21. Значение по умолчанию 1.
  • minimumFractionDigits - определяет минимальное количество цифр дроби для использования. Возможные значения: от 0 до 100. Значение по умолчанию для простого числа и процентного форматирования равно 0, для форматирования денежных единиц это количество второстепенных цифр в единицах измерения, указанное в списке кодов валют ISO 4217 (2, если список не содержит этой информации).
  • maximumFractionDigits - определяет максимальное число используемых цифр дроби. Возможные значения от 0 до 100. Значение по умолчанию для обычного форматирования чисел равно большему из minimumFractionDigits и 3, для форматирования денежных единиц это значение равно большему из minimumFractionDigits и количества второстепенных цифр, предусмотренных в списке кодов валют ISO 4217 (2, если список не дает такой информации). Значение по умолчанию для форматирования процентов равно большему из minimumFractionDigits и 0.
  • minimumSignificantDigits - определяет минимальное количество значащих цифр для использования. Возможные значения от 1 до 21. Значение по умолчанию 1.
  • maximumSignificantDigits - определяет максимальное количество значащих цифр для использования. Возможные значения от 1 до 21. Значение по умолчанию 21.

Выше перечислены основные настройки, а не полный список. Для единиц измерения служат unit и unitDisplay; notation выбирает standard, scientific, engineering или compact. Также доступны numberingSystem, currencySign, signDisplay, compactDisplay, roundingMode, roundingIncrement и trailingZeroDisplay. Полный набор, сочетания и поддержку смотрите в справочнике Intl.NumberFormat. Локализованное форматирование определено в ECMA-402.

Возвращаемое значение и особенности

Возвращает строку, отформатированную через Intl.NumberFormat. Результат может содержать неразрывные пробелы и управляющие символы направления; не сравнивайте его с универсальным образцом для всех сред. Для многократного форматирования удобно создать один Intl.NumberFormat. Неверные языковые теги или значения настроек могут вызвать RangeError, отсутствие currency при style: "currency" — TypeError.

Примеры, попробуйте сами

Как язык и настройки меняют формат числа

Измените язык, число или style. Сравните разделители, проценты и валюту.

index.html
HTML
<p>Результат выполнения выводится в консоль.</p>
main.js
JavaScript
var num = 123456 // инициализируем числовую переменную
var options1 = { style: 'percent' } // определяем объект со свойствами, определяющими параметры форматирования
var options2 = {
    style: 'currency', // определяем объект со свойствами, определяющими параметры форматирования
    currency: 'EUR',
}

console.log(num.toLocaleString('de-DE')) // Возвращаемое значение "123.456" (German)
console.log(num.toLocaleString('en-IN')) // Возвращаемое значение "1,23,456" (India)
console.log(num.toLocaleString('zh-Hans-CN-u-nu-hanidec')) // Возвращаемое значение "一二三,四五六" (Chinese)

console.log(num.toLocaleString('en-US', options1)) // "12,345,600%"
console.log(num.toLocaleString(undefined, options1)) // Формат зависит от языка среды выполнения.
console.log(num.toLocaleString('en-US', options2)) // "€123,456.00"
console.log(num.toLocaleString(undefined, options2)) // Формат зависит от языка среды выполнения.

console.log('Единица измерения:', (12.5).toLocaleString('en-US', { style: 'unit', unit: 'kilometer' }))
console.log('Значащие цифры:', (1234.567).toLocaleString('en-US', { maximumSignificantDigits: 3 }))