


Intl.NumberFormat форматирует число по правилам выбранной локали. Для цены задайте style: "currency" и передайте код валюты. На Mentoring.digital покажем, как вывести сумму и сохранить возможность отдельно стилизовать обозначение валюты.
В примере сумма уже рассчитана и выражена в евро. de-DE управляет разделителями и размещением обозначения валюты, а EUR задаёт валюту. Один экземпляр форматтера удобно использовать для нескольких сумм с одинаковыми настройками.
const euro = new Intl.NumberFormat("de-DE", {
style: "currency",
currency: "EUR",
});
console.log(euro.format(1234.5));
console.log(euro.formatToParts(1234.5));
В немецкой локали у примера десятичная запятая, разделитель тысяч и обозначение евро после числа. Между частями могут быть специальные пробелы. Если интерфейсу нужно выделить валюту, обработайте массив из formatToParts(), где у каждой части есть type и value. Сохраните их порядок.
const yen = new Intl.NumberFormat("ja-JP", {
style: "currency",
currency: "JPY",
});
console.log(yen.resolvedOptions().maximumFractionDigits);
// 0
По умолчанию формат валюты учитывает число дробных знаков, предусмотренное для неё. Если экрану нужны явные границы, задайте minimumFractionDigits и maximumFractionDigits в согласованных настройках. Форматтер формирует строку для отображения. Расчёты и пересчёт между валютами выполняются отдельно.
Проверьте отрицательную сумму, ноль и число, где ожидается округление. Для правил локали сравните значимые части строки, например fraction и currency. Так тесту не придётся угадывать, какой пробел вставила среда выполнения.
Форматирование данных можно закрепить на практическом курсе JavaScript и обсудить тесты интерфейса с ментором по фронтенду.