Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Dart中将数字转换为人类可读的格式(例如1.5k、5m、1b)?_Dart_Flutter - Fatal编程技术网

在Dart中将数字转换为人类可读的格式(例如1.5k、5m、1b)?

在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

我正在开发一个与社交信息相关的应用程序,我想将大数字转换为人类可读的格式(例如1500到1.5k),而且我对Dart还是新手。
您的帮助将不胜感激。

您可以使用颤振的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()”