在Dart中将数字转换为人类可读的格式(例如1.5k、5m、1b)?
我正在开发一个与社交信息相关的应用程序,我想将大数字转换为人类可读的格式(例如1500到1.5k),而且我对Dart还是新手。在Dart中将数字转换为人类可读的格式(例如1.5k、5m、1b)?,dart,flutter,Dart,Flutter,我正在开发一个与社交信息相关的应用程序,我想将大数字转换为人类可读的格式(例如1500到1.5k),而且我对Dart还是新手。 您的帮助将不胜感激。您可以使用颤振的NumberFormat类,该类具有一些内置函数,以获得所需的结果 例如: 如果你想使用货币,这是一种方法 var _formattedNumber = NumberFormat.compactCurrency( decimalDigits: 2, symbol: '', // if you want to add curr
您的帮助将不胜感激。您可以使用颤振的NumberFormat类,该类具有一些内置函数,以获得所需的结果 例如: 如果你想使用货币,这是一种方法
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');
此is代码的输出应为:
如果输入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为输出
我尝试了这个,正在工作…创建一个类,并在任何地方使用它的静态方法。
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);
}
}
}
类编号格式{
静态字符串格式化程序(字符串currentBalance){
试一试{
//后缀={'','k','M','B','T','P','E'};
double value=double.parse(currentBalance);
如果(值<1000000){//小于一百万
返回值.toStringAsFixed(2);
}如果(值>=1000000&&value<(1000000*10*100)){//小于1亿
双结果=值/1000000;
返回结果。toStringAsFixed(2)+“M”;
}否则,如果(值>=(1000000*10*100)和&value<(1000000*10*100*100)){//小于1000亿
双结果=值/(1000000*10*100);
返回结果。toStringAsFixed(2)+“B”;
}否则如果(值>=(1000000*10*100*100)和&value<(1000000*10*100*100*100)){//小于100万亿
双结果=值/(1000000*10*100*100);
返回结果。toStringAsFixed(2)+“T”;
}
}捕获(e){
印刷品(e);
}
}
}
打印(NumberFormat.compactCurrency(小数位数:1,符号:'')。格式(1500))代码>此包可能会帮助您实际使用NumberFormat.compactLong会更好地回答问题,因为他没有使用货币。是的,也可以这样做…但这将提供完整的字符串,而不是仅M表示百万,K表示千…如果希望K较小,请添加“.toLowerCase()”