Flutter 取两(N)位小数

话不多说直接上代码:

  /**
   * target  要转换的数字
   * postion 要保留的位数
   * isCrop  true 直接裁剪 false 四舍五入
   */
  String formartNum(num target, int postion, {bool isCrop = false}) {
    String t = target.toString();
    // 如果要保留的长度小于等于0 直接返回当前字符串
    if (postion < 0) {
      return t;
    }
    if (t.contains(".")) {
      String t1 = t.split(".").last;
      if (t1.length >= postion) {
        if (isCrop) {
          // 直接裁剪
          return t.substring(0, t.length - (t1.length - postion));
        } else {
          // 四舍五入
          return target.toStringAsFixed(postion);
        }
      } else {
        // 不够位数的补相应个数的0
        String t2 = "";
        for (int i = 0; i < postion - t1.length; i++) {
          t2 += "0";
        }
        return t + t2;
      }
    } else {
      // 不含小数的部分补点和相应的0
      String t3 =  postion>0?".":"";
      
      for (int i = 0; i < postion; i++) {
        t3 += "0";
      }
      return t + t3;
    }
  }

测试:

log(formartNum(10, 0));
log(formartNum(10, 1));
log(formartNum(100.0, 2));
log(formartNum(10.999, 2, isCrop: true));
log(formartNum(10.991, 1, isCrop: true));
log(formartNum(10.001, 5));
log(formartNum(10.008, 6));

打印结果:

flutter: 10
flutter: 10.0
flutter: 100.00
flutter: 10.99
flutter: 10.9
flutter: 10.00100
flutter: 10.008000

你可能感兴趣的:(Flutter 取两(N)位小数)