我正在开发一个与社交聊天相关的应用,我想将大数字转换为人类可读的格式(例如1500到1.5k),而且我还是Dart的新手。 您的帮助将不胜感激。
答案 0 :(得分:3)
您可以使用Flutter的NumberFormat类,该类具有一些内置函数来实现所需的结果。
Check out this link for NumberFormat class of flutter
示例: 如果您要使用货币,这是一种方法。
var _formattedNumber = NumberFormat.compactCurrency(
decimalDigits: 2,
symbol: '', // if you want to add currency symbol then pass that in this else leave it empty.
).format(numberToFormat);
print('Formatted Number is $numberToFormat');
此代码的输出为:
如果输入了1000,则输出为1K
另一种方法是仅使用NumberFormat.compact()
即可提供所需的输出...
// In this you won't have to worry about the symbol of the currency.
var _formattedNumber = NumberFormat.compact().format(numberToFormat);
print('Formatted Number is $numberToFormat');
以上示例的输出也将是:
如果输入了1000,则输出为1K
我尝试了这个并且正在工作...
答案 1 :(得分:0)
创建一个类并在任何地方使用其静态方法。
class NumberFormatter{
static String formatter(String currentBalance) {
try{
// suffix = {' ', 'k', 'M', 'B', 'T', 'P', 'E'};
double value = double.parse(currentBalance);
if(value < 1000000){ // less than a million
return value.toStringAsFixed(2);
}else if(value >= 1000000 && value < (1000000*10*100)){ // less than 100 million
double result = value/1000000;
return result.toStringAsFixed(2)+"M";
}else if(value >= (1000000*10*100) && value < (1000000*10*100*100)){ // less than 100 billion
double result = value/(1000000*10*100);
return result.toStringAsFixed(2)+"B";
}else if(value >= (1000000*10*100*100) && value < (1000000*10*100*100*100)){ // less than 100 trillion
double result = value/(1000000*10*100*100);
return result.toStringAsFixed(2)+"T";
}
}catch(e){
print(e);
}
}
}