flutter 钱显示的处理

在钱包的开发中,遇到了一些钱显示的问题,比如钱的小数后太多,或者数额太大,对我们的显示造成很大的障碍.
对此我对这些钱的显示和整理做了一些处理.

  • 钱数太大,保留小数点后两位,在后面拼接K,M,B,T,再大的话,基本情况不会出现,所以并无处理.
String moneyFormat(double money) {
  if (money < 1000) {
    return formatNum(money);
  } else if (1000 <= money && money < 1000000) {
    return '${formatNum((money / 1000))}K';
  } else if (money > 1000000 && money < 1000000000) {
    return '${formatNum((money / 1000000))}M';
  } else if (money >= 1000000000 && money < 1000000000000) {
    return '${formatNum(money / 1000000000)}B';
  } else if (money > 1000000000000) {
    return '${formatNum(money / 1000000000000)}T';
  }

  return formatNum(money);
}


调用: moneyFormat(100000.00);
打印显示: 100.00K

  • 在使用toStringAsFixed的时候,发现有时候会出现一些四舍五入的情况,因此在网上找到了处理方式
//position是小数点后显示几位
String formatNum(dynamic nums, {int postion = 2}) {
  var num;
  if (nums is double) {
    num = nums;
  } else {
    num = double.parse(nums.toString());
  }
  if ((num.toString().length - num.toString().lastIndexOf(".") - 1) < postion) {
    return (num.toStringAsFixed(postion)
        .substring(0, num.toString().lastIndexOf(".") + postion + 1)
        .toString());
  } else {
    return (num.toString()
        .substring(0, num.toString().lastIndexOf(".") + postion + 1)
        .toString());
  }
}

调用: formatNum(123.334369923, postion: 4);
打印显示: 123.3343

  • 还有一种情况就是,如果是小数点后如果是0,那么我们就显示整数,如果不为0,那么就显示小数点后极为,固定下来的,比如4位,就展示4位小数,在把无效的0尾数去掉

尾数去0需要导入一个插件,正好我们项目里在计算的时候也用到了.这个插件就是用来算钱的.
decimal: ^2.3.0

//钱的显示  如果小数点后的值 大于0 返回全部  如果小数点后的值 == 0  返回整数
String moneyDoubleOrInt(double money) {
  String str = '$money';
  List sList = str.split('.');
  if (sList.length == 2 && double.parse(sList[1]) > 0) {
    //最多保留4位 并去除无效0尾数
    return Decimal.parse(formatNum(str, postion: 4)).toString();
  } else {
    return '${int.parse(sList[0])}';
  }
}

调用: 
moneyDoubleOrInt(999.9400);
moneyDoubleOrInt(999.94855330);
moneyDoubleOrInt(1.00005);

打印显示:  
999.94 ,
999.9485 , 
1

就这样,拿来即用即可,可能在decimal这个插件里,我写的这些方法都有,但是自己写跟用别人的插件就是不一样,而且最近确实也没时间去研究,等有空了,在去具体看看那个插件.

如果你喜欢我的文章,那就点个关注,留个言吧!感谢大家~~! 拜拜,回见!

你可能感兴趣的:(flutter 钱显示的处理)