Я работаю над интернационализацией моего приложения. Основываясь на выбранном языке, т.е. локали, мне нужно отформатировать большие числа. Преобразование чисел в миллионы и миллиарды в зависимости от локали с использованием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