Как представить числа в миллионах миллиардов на основе выбранной локали, используя функцию FormattedNumber в реагировать-intl? - PullRequest
0 голосов
/ 21 мая 2019

Я работаю над интернационализацией моего приложения. Основываясь на выбранном языке, т.е. локали, мне нужно отформатировать большие числа. Преобразование чисел в миллионы и миллиарды в зависимости от локали с использованиемact-intl.

Я попытался преобразовать число в миллионы и миллиарды, а затем вызвал функцию formattednumber в response-intl, которая возвращается как NaN, потому что добавляется B (Billion) или M (Million).

Код для преобразования чисел в миллиард и миллион

numberToHumanReadableFormatConverter = number => {    
const num =
  Math.abs(Number(number)) >= 1.0e9
    ? (Math.abs(Number(number)) / 1.0e9).toFixed(2) + 'B'
    : Math.abs(Number(number)) >= 1.0e6
      ? (Math.abs(Number(number)) / 1.0e6).toFixed(2) + 'M'
      : Math.abs(Number(number)) >= 1.0e3
        ? // ? Math.abs(Number(number)) / 1.0e3 + 'K'
        Math.abs(Number(number)).toFixed(2)
        : Math.abs(Number(number)).toFixed(2);

if (num == 0) {
  return '0';
}
return num % 1 != 0 ? num : num / 1;
};

Интернационализация числового формата с использованием кода реакции-intl

 { this.numberToHumanReadableFormatConverter(<FormattedNumber value="111111111111111111111111111111111111"/>
                        )} 

В зависимости от выбранного формата номера локали должен меняться со значением в миллионах миллиардов.

Пример 1: если выбрано «en» вход: 253050390812642 Ожидаемый выход: 253 050,39

Пример 1: если выбрано «де» вход: 253050390812642 Ожидаемый выход: 253.050,39B

...