Как отформатировать число с разделителями
Короткий ответ
Метод toLocaleString() форматирует число по правилам указанного языка:
console.log((1234567.891).toLocaleString('en-US'));Результат:
1,234,567.891Знаки после запятой
Второй аргумент задаёт точность:
console.log((1234.5).toLocaleString('en-US', { minimumFractionDigits: 2 }));Результат:
1,234.50Валюта
Формат currency добавляет знак валюты в правильном месте:
console.log((1234.5).toLocaleString('en-US', { style: 'currency', currency: 'USD' }));Результат:
$1,234.50Короткая запись
Запись compact превращает большие числа в 1.2K или 3.4M:
const short = new Intl.NumberFormat('en-US', { notation: 'compact' });
console.log(short.format(1234), short.format(3400000));Результат:
1.2K 3.4MЧастая ошибка
Без аргумента с языком toLocaleString() использует язык системы пользователя, и результат отличается от компьютера к компьютеру. Передавайте язык явно:
console.log((1234567.5).toLocaleString('en-US'));
console.log((1234567.5).toLocaleString('de-DE'));Результат:
1,234,567.5
1.234.567,5Функции из этого ответа
- Number.prototype.toLocaleString — Форматирует число по правилам языка: разделители разрядов, валюта, проценты.
- Intl.NumberFormat — Форматирует числа, валюты, проценты и единицы измерения по правилам языка.