NumberFormat возвращает неправильный формат для преобразования числа в валюту - PullRequest
1 голос
/ 20 марта 2020

код:

let currency = 400023;
console.log(new Intl.NumberFormat('de-DE', {
  style: 'currency',
  currency: 'EUR'
}).format(currency));

Ожидается: € 400,023,00

Фактически: € 400 023,00

Вкл. примеры, которые я нашел в документации JS, показывают точки, которые используются как тысячи разделителей и запятые для центов, но когда я использую его сам, это не работает.

1 Ответ

0 голосов
/ 24 марта 2020

Как заметил @RobG, это проблема вашей реализации JS, которая не поддерживает объект Intl должным образом.

Все текущие браузеры имеют полную поддержку Intl.

Если вы запускаете код на Node.js, ситуация немного сложнее. До Node.js 13 была только частичная поддержка интернационализации (ICU), включая Intl.

Начиная с Node.js 13, по умолчанию встроена полная поддержка ICU / интернационализации. Подробности см .:

По сути, вы можете запустить этот кусок кода:

console.log(new Intl.DateTimeFormat('es',{month:'long'}).format(new Date(9E8)));

Ваш вывод может быть:

  • Ошибка: нет поддержки ICU - очень старый браузер / Node.js
  • Январь : Частичная поддержка ICU - старый браузер / Node.js <13 </li>
  • enero: Полная поддержка ICU - недавний браузер / Node.js> = 13

В случае, если вы застряли с Node.js <13, вы можете засыпать полную поддержку ICU с помощью <a href="https://www.npmjs.com/package/full-icu" rel="nofollow noreferrer">https://www.npmjs.com/package/full-icu.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...