JavaScript метод Number.prototype.toLocaleString()
Определение и применение
JavaScript метод toLocaleString() преобразует числовое значение (объект Number) в строковое
и возвращает это значение, используя текущий или указанный языковой стандарт.
Проверьте поведение в редактируемом примере.
Поддержка браузерами
Спецификации: ecma262, ecma402
Поддерживается во всех основных браузерах с 2015 года.
| Возможность | Компьютеры | Мобильные | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
toLocaleString | 1 | 12 Версия 12 выпущена в 2015 г. Примечание MDN (англ.) Before Edge 18, numbers are rounded to 15 decimal digits. For example, | 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 синтаксис
// используя текущий языковой стандарт
num.toLocaleString();
// используя указанный языковой стандарт
num.toLocaleString( locales );
// используя указанный языковой стандарт с дополнительными настройками
num.toLocaleString( locales, options );
Спецификация
ECMAScript: Number.prototype.toLocaleString()
Значения параметров
| Параметр | Описание |
|---|---|
locales |
Параметр должен быть строкой, содержащей языковой тег
BCP 47, или массивом таких языковых тегов. Если параметр не указан или не определен, используется языковой стандарт
среды выполнения JavaScript по умолчанию. При указании нескольких строк языкового стандарта следует
перечислять их в порядке убывания приоритета, чтобы первая запись была предпочитаемым языковым стандартом.
Необязательный параметр.Языковой тег BCP 47 определяет язык и минимально содержит код основного языка. В своем наиболее распространенном виде он может содержать по порядку: код языка, код скрипта и код страны или региона, разделенные дефисами. Хотя тег не чувствителен к регистру, рекомендуется писать код скрипта с заглавной первой буквы, верхний регистр для кода страны и региона, а строчный регистр для всего остального. |
options |
Необязательный параметр, который содержит объект со свойствами, определяющими параметры
форматирования:
Настройки дробных и значащих цифр взаимодействуют через
|
Выше перечислены основные настройки, а не полный список. Для единиц измерения служат 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
<p>Результат выполнения выводится в консоль.</p>
main.js
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 }))