Преобразование числа в формат местной валюты в JavaScript: как это сделать правильно?

5c5b9cb6 2ad0 41b1 95e5 f57d8df78018 HTML

Работа с числами в формате местной валюты является важной задачей в разработке, особенно когда речь идет о финансовых приложениях. Рассмотрим, как можно корректно преобразовать число в формат местной валюты с использованием JavaScript.

Пример кода

Допустим, у нас есть переменная price, содержащая числовое значение в формате BigInt:

let price = 99n;
console.log(price.toLocaleString("ru-RU", {style: "currency"}));

Какой результат мы получим в консоли при выполнении этого кода?

Что происходит в коде?

В первой строке мы создали переменную price и присвоили ей значение 99n в формате BigInt. Этот тип данных позволяет работать с очень большими числами, избегая потерь точности, что особенно важно в финансовых расчетах.

Затем мы пытаемся преобразовать число 99n в формат местной валюты с помощью метода toLocaleString(). Этот метод может принимать два аргумента:

  1. Локаль (например, "ru-RU"), определяющая, в каком формате будет отображено число.
  2. Объект с опциями форматирования, в котором можно указать различные параметры, такие как стиль отображения числа.

В нашем примере используется опция style: "currency", которая указывает на то, что число должно быть представлено в виде валюты.

Недостающий параметр

Однако, важная деталь была упущена: в настройках форматирования не указана конкретная валюта. В случае использования style: "currency", необходимо также указать параметр currency, определяющий код валюты, в которой должно отображаться число. Без указания этого параметра, попытка форматирования приведет к ошибке.

Корректный пример

Чтобы избежать ошибки, необходимо добавить код валюты, например:

let price = 99n;
console.log(price.toLocaleString("ru-RU", {style: "currency", currency: "RUB"}));
console.log(price.toLocaleString("en-US", {style: "currency", currency: "USD"}));
console.log(price.toLocaleString("de-DE", {style: "currency", currency: "EUR"}));

Этот код выведет в консоль:

  • 99,00 ₽ для российской валюты (рубли),
  • $99.00 для американской валюты (доллары США),
  • 99,00 € для европейской валюты (евро).

Итог

Если вы не указываете код валюты при использовании style: "currency", форматирование не будет выполнено, и возникнет ошибка:

let price = 99n;
console.log(price.toLocaleString("ru-RU", {style: "currency"}));
// TypeError: Currency code is required with currency style.

Чтобы избежать этой ошибки, всегда указывайте как стиль форматирования ("currency"), так и код валюты ("currency": "RUB", "USD", "EUR" и т.д.). Это обеспечит корректное отображение числа в формате местной валюты и позволит избежать ошибок в работе вашего приложения.

Оцените статью