我正在致力于我的申请的国际化。我需要根据所选语言(即语言环境)来格式化大数。使用react-intl根据语言环境将数字转换成数百万亿。
我尝试将数字转换为百万和十亿,然后在react-intl中调用formattednumber函数,由于B(Billion)或M(Million)被追加,因此以NaN返回。
将数字转换成十亿和百万的代码
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;
};
使用react-intl代码对数字格式进行国际化
{ this.numberToHumanReadableFormatConverter(<FormattedNumber value="111111111111111111111111111111111111"/>
)}
根据所选的区域设置,数字格式应更改为“十亿”。
示例1:如果选择“ en” 输入:253050390812642 预期输出:253,050.39B
示例1:如果选择“ de” 输入:253050390812642 预期输出:253.050,39B