Intl.NumberFormat не выполняет миллионы правильно - PullRequest
0 голосов
/ 10 июля 2020

Итак, у меня есть таблица с большими денежными значениями, и я использую средство форматирования международных номеров, например:

const formatCurrency = new Intl.NumberFormat("en-IN", {
    style: "currency",
    currency: "USD",
    minimumFractionDigits: 0,
    currencyDisplay: "narrowSymbol"
})

Но вывод помещает "," в неправильное место, когда число становится больше 5 цифр. Вот так: 2,75 450 долларов. Это должно быть 275 450 долларов. Или так: 14,75 099 долларов. Это должно быть 1475099 долларов.

Я просмотрел документацию и ничего не нашел, но вполне могу что-то упустить.

Помощь?

1 Ответ

0 голосов
/ 10 июля 2020

Вы указали индийский английский язык sh как локаль (en-IN).

$14,75,099 - это правильное форматирование в Индии, что составляет 14 лакхов 75 тысяч 99, поскольку они использовать другие единицы ($1,475,099 было бы неправильно, потому что миллионы не являются обычно используемой единицей).

Вы можете узнать больше об индийской системе нумерации в Википедии :

Индийская система нумерации используется на Индийском субконтиненте для express больших чисел. Термины лакх (100 000) и крор (10 000 000) являются наиболее часто используемыми терминами ( даже на английском языке sh, например, в местной разновидности под названием Indian Engli sh) до express больших чисел. в системе. Например, 150 000 рупий в Индии называют «1,5 лакха рупий», что записывается как 1,50 000 рупий; 30 000 000 (тридцать миллионов) рупий упоминаются как «3 крор рупий», что записывается как 3 00 000 000 рупий с запятыми в тысячах, лакхах и крорах.

[...]

В индийской системе нумерации разделители используются иначе, чем в международной норме. Вместо группировки цифр по тройкам, как в международной системе, индийская система нумерации группирует три крайние правые цифры вместе (до разряда сотен), а затем группирует их наборами из двух цифр. Таким образом, один триллион будет записан как 10, 00,00,00,00,000 или 10 хараб (или один лакх крор). Это делает номер удобным для чтения с использованием терминологии системы.

(выделено мной)

Если это ошибка и вы не хотите использовать индийский язык, тогда вам нужно чтобы изменить код, чтобы использовать, например, en-US или en-UK вместо en-IN.

...