--- title: Number.prototype.toLocaleString() slug: Web/JavaScript/Reference/Global_Objects/Number/toLocaleString tags: - JavaScript - Number - Інтернаціоналізація - метод - прототип translation_of: Web/JavaScript/Reference/Global_Objects/Number/toLocaleString original_slug: Web/JavaScript/Reference/Global_Objects/Число/toLocaleString ---
Метод toLocaleString()
повертає рядок, що відображає число у відповідності до налаштувань мови.
numObj.toLocaleString(
[locales [, options]])
Аргументи locales
та options
налаштовують поведінку функції та дозволяють застосункам вказувати мову, чиї правила форматування мають застосовуватись. У тих реалізаціях, які ігнорують аргументи locales
та options
, локальні налаштування та форма поверненого рядка повністю залежать від реалізації.
Intl.NumberFormat()
, щоб дізнатись подробиці щодо цих параметрів та їхнього використання.Рядок, що відображає число у відповідності до налаштувань мови.
При форматуванні великої кількості чисел краще створити об'єкт {{jsxref("NumberFormat")}} та використовувати функцію, надану його властивістю {{jsxref("NumberFormat.format")}}.
toLocaleString
При загальному використанні, без зазначення локалі, повертається рядок у мовному форматі, що стоїть за замовчуванням та з початковими параметрами.
var number = 3500; console.log(number.toLocaleString()); // Відображає "3,500" у форматі U.S. English
locales
та options
Аргументи locales
та options
ще не підтримуються в усіх переглядачах. Для перевірки їхньої підтримки у ES5.1 та новіших реалізаціях можна скористатись вимогою, згідно якої недозволені мовні позначення відхиляються з винятком {{jsxref("Global_Objects/RangeError", "RangeError")}}:
function toLocaleStringSupportsLocales() { var number = 0; try { number.toLocaleString('i'); } catch (e) { return e.name === 'RangeError'; } return false; }
До ES5.1, реалізації не були зобов'язані викидати виняток з помилкою діапазону, якщо toLocaleString
викликався з аргументами.
Перевірка, яка працює в усіх хостах, в тому числі тих, що підтримують ECMA-262 до версії 5.1, полягає в безпосередньому тестуванні функцій, визначених у ECMA-402 як такі, що зобов'язані підтримувати регіональні налаштування для Number.prototype.toLocaleString
:
function toLocaleStringSupportsOptions() { return !!(typeof Intl == 'object' && Intl && typeof Intl.NumberFormat == 'function'); }
Цей код перевіряє наявність глобального об'єкта Intl
, перевіряє, що він не дорівнює null
та що він має властивість NumberFormat
, яка є функцією.
locales
Цей приклад демонструє деякі варіації локалізованих форматів чисел. Щоб отримати формат мови, задіяної в інтерфейсі вашого застосутку, переконайтесь, що вказали цю мову (та, можливо, кілька запасних мов) за допомогою аргументу locales
:
var number = 123456.789; // В німецькій десятковим роздільником є кома, а крапка розділяє тисячі console.log(number.toLocaleString('de-DE')); // → 123.456,789 // Арабська у більшості арабськомовних країн використовує Індо-арабські цифри console.log(number.toLocaleString('ar-EG')); // → ١٢٣٤٥٦٫٧٨٩ // Індія використовує роздільники тисячі/лакх/крор console.log(number.toLocaleString('en-IN')); // → 1,23,456.789 // ключ розширення nu налаштовує систему нумерації, наприклад, китайську десяткову console.log(number.toLocaleString('zh-Hans-CN-u-nu-hanidec')); // → 一二三,四五六.七八九 // при запиті мови, яка, можливо, не підтримується, наприклад, // балійської, додайте запасні мови, в даному випадку це індонезійська console.log(number.toLocaleString(['ban', 'id'])); // → 123.456,789
options
Результат методу toLocaleString
можна налаштувати за допомогою аргументу options
:
var number = 123456.789; // налаштування формату валюти console.log(number.toLocaleString('de-DE', { style: 'currency', currency: 'EUR' })); // → 123.456,79 € // японська єна не використовує дробові розряди console.log(number.toLocaleString('ja-JP', { style: 'currency', currency: 'JPY' })) // → ¥123,457 // обмежити трьома значущими цифрами console.log(number.toLocaleString('en-IN', { maximumSignificantDigits: 3 })); // → 1,23,000 // Використовувати мову системи з параметрами для форматування чисел var num = 30000.65; console.log(num.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2})); // → "30,000.65" де мова системи англійська, або // → "30.000,65" де мова системи німецька, або // → "30 000,65" де мова системи французька
Специфікація |
---|
{{SpecName('ESDraft', '#sec-number.prototype.tolocalestring', 'Number.prototype.toLocaleString')}} |
{{SpecName('ES Int Draft', '#sup-number.prototype.tolocalestring', 'Number.prototype.toLocaleString')}} |
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
{{Compat("javascript.builtins.Number.toLocaleString")}}