如何使用 dart/flutter 将数字格式化为数千、数百万和数十亿?

jea*_*ama 13 dart flutter

如何将一个数字从普通数字(例如:134900)转换为这样的数字:12K、1.5M、4.2B。

jea*_*ama 16

这是一个极简函数,当然,在执行该函数之前,您必须添加验证代码来验证该数字是否有效。否则享受...

void main() {
      double num = 1250;

      var myNumber = k_m_b_generator(num);

      print(myNumber);
    }

    String k_m_b_generator(num) {
      if (num > 999 && num < 99999) {
        return "${(num / 1000).toStringAsFixed(1)} K";
      } else if (num > 99999 && num < 999999) {
        return "${(num / 1000).toStringAsFixed(0)} K";
      } else if (num > 999999 && num < 999999999) {
        return "${(num / 1000000).toStringAsFixed(1)} M";
      } else if (num > 999999999) {
        return "${(num / 1000000000).toStringAsFixed(1)} B";
      } else {
        return num.toString();
      }
    }
Run Code Online (Sandbox Code Playgroud)


小智 11

您可以将flutter的NumberFormat类与compact函数一起使用。

formatNumber(dynamic myNumber) {
    // Convert number into a string if it was not a string previously
    String stringNumber = myNumber.toString();

    // Convert number into double to be formatted.
    // Default to zero if unable to do so
    double doubleNumber = double.tryParse(stringNumber) ?? 0;

    // Set number format to use
    NumberFormat numberFormat = new NumberFormat.compact();

    return numberFormat.format(doubleNumber);
}
Run Code Online (Sandbox Code Playgroud)


cod*_*ker 6

答案并不完全正确。如果你测试一下,你就会明白我的意思。根据上面的答案,我创建了这个解决方案:

String numberFormat(int n) {
  String num = n.toString();
  int len = num.length;

  if (n >= 1000 && n < 1000000) {
    return num.substring(0, len - 3) + '.' + num.substring(len - 3, 1 + (len - 3)) + 'k';
  } else if (n >= 1000000 && n < 1000000000) {
    return num.substring(0, len - 6) + '.' + num.substring(len - 6, 1 + (len - 6)) + 'm';
  } else if (n > 1000000000) {
    return num.substring(0, len - 9) + '.' + num.substring(len - 9, 1 + (len - 9)) + 'b';
  } else {
    return num.toString();
  }
}
Run Code Online (Sandbox Code Playgroud)