TGViewer
@davidobryakov @davidobryakov @davidobryakov · 638 subscribers
Post #1223 797
Форматируем вывод числа с учётом валюты и локали на фронтенде

#frontend #intl

Несколько месяцев назад, я уже рассказывал вам про такую вещь, как Intl API. Тогда мы разбирались с датами, сегодня предлагаю научиться форматировать валюты с помощью следующей функции:

const formatCurrency = (value, locale, currencyCode, config = {}) => {
return new Intl.NumberFormat(locale, {
style: "currency",
currency: currencyCode,
...config,
}).format(value)
}

console.log(formatCurrency(123456, "ru-RU", "RUB"))
// 123 456,00 р.

console.log(formatCurrency(123456, "en-US", "USD"))
// $123,456.00


Аргумент config был добавлен мною для возможности расширения текущей конфигурации экземпляра Intl, например, можно добавить параметр maximumSignificantDigits для округления до 3 значащих цифр:

console.log(formatCurrency(123456.789, 'ru-RU', 'RUB', { maximumSignificantDigits: 3 }))
// 123 000 р.


По-хорошему, бы тут добавить какую-то проверку, что аргументы передаваемые в config действительно находятся внутри Intl.NumberFormat и корректно им будут обработаны, а также защиту от перезаписывания заданных нами параметров, но моя цель была только в том, чтобы поделиться простым способом форматирования чисел с помощью встроенного браузерного API.

Если верить спецификации, коды валют берутся из стандарта ISO 4217. Мне не удалось найти оригинальный список кодов валют по этому стандарту не в PDF, но зато в онлайне есть наш ОКВ, который основан на этом стандарте.

Подробнее: https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat
  • 👍 5
  • ❤ 4
More from @davidobryakov
  1. Feb 14, 2026Оптимизация работы эндпоинта Часто так бывает, что новые фичи заводятся итерационным путём…
  2. May 24, 2025Настраиваем автодокументирование для express-приложений Читать полностью: https://blog.kan…
  3. May 13, 2025Основные паттерны микросервисной архитектуры: Strangler Fig, API Gateway, Service Mesh и д…
  4. May 11, 2025Поиск мотивации в скучных задачах Частенько бывает, что нехватка мотивации для решения чег…
  5. May 10, 2025Переход с Python на Go и мысли о высшем образовании / ч. 3 Пост в блоге: https://blog.kant…
  6. May 10, 2025Переход с Python на Go и мысли о высшем образовании / ч. 2 Пост в блоге: https://blog.kant…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →