Intl.NumberFormat: локализованное отображение чисел
Intl.NumberFormat форматирует числа по правилам выбранной локали и параметрам отображения.
Назначение
Intl.NumberFormat форматирует числа по правилам выбранной локали и параметрам отображения.
Как это работает
Форматтер можно создать один раз и использовать повторно. formatToParts возвращает структурированные части, позволяя отличить десятичный разделитель, дробь и группировку без ручного разбора всей строки.
Пример
const formatter=new Intl.NumberFormat("ru-RU",{minimumFractionDigits:2,maximumFractionDigits:2});
const parts=formatter.formatToParts(1234.5);
console.assert(parts.find(p=>p.type==="decimal").value===",");
console.assert(parts.find(p=>p.type==="fraction").value==="50");
Что должно получиться
Форматтер использует запятую как десятичный разделитель и показывает два дробных знака. Числовое значение остаётся отдельным от его локализованного представления.
Граница применения и частая ошибка
Не преобразуйте локализованную строку обратно в число через простую замену запятой. Группировка, пробелы, знаки и системы цифр зависят от локали; ввод требует отдельного контракта.
Самостоятельная проверка
Сравните ru-RU и en-US для одного числа. Проверьте структуру formatToParts вместо предположения о конкретном обычном пробеле между группами разрядов.
JavaScript в песочнице этого сайта не выполняется. Перенесите пример в отдельный учебный файл. Сначала проверьте исходный результат, затем измените входные данные; ошибка проверки означает, что результат отличается от ожидаемого.