数字添加千位符

  // 数字添加千位符
  const numToThousandChar = (num:number) => {
    let numStr = num.toString().split(".");
    let arr = numStr[0].split("").reverse();
    let res:string[] = [];
    let resStr: string = "";
    for(let i = 0; i < arr.length; i++){
      if(i % 3 === 0 && i !== 0){
        res.push(",");
      }
      res.push(arr[i]);
    }
    res.reverse();
    if(numStr[1]){
      resStr = res.join("").concat(".",numStr[1]);
    }else{
      resStr = res.join("");
    }
    return resStr;
  }

在一些场景中,为了让数字直观、易读,需要给一个数字添加千位符。

我想到了有3种结局方案

1. 使用正则匹配

2. 使用num.toLocalsString();

3. 如上述代码;

第一种方案,需要对正则比较熟悉,匹配各种模式,由于我比较懒,没有去世纪编码,但是理论上应该是可以实现的;

第二种方案,可以实现千位符效果,但是有一个弊端,默认的话小数部分给保留了3位,位数多了就给四舍五入掉了。不知道是不是我没有正确的使用toLocalsString()的配置像。我想这种方式依赖配置项,把我自己的效果交给运气,总不那么踏实,没有话费时间去验证。

我比较倾向于第三种方案,动手去实现了下。

第三种方案,没有任何的依赖,在任何环境下都能正常实现,比较符合我的预期,在代码的健壮性上是比较靠谱的。

大概的思路:

1. 将数字转化为数组去处理:数组数据结构方便处理;

2. 因为数字添加千位符,是从后向前添加,每3位加一逗号,为保证后面的3位足位,我把数组倒叙排列,然后每到了3的倍数索引的位置,添加一个逗号数组项;

3. 新建一个空数组和一个空字符串,用来承接处理后的结果;

4. 整数部分处理完后,如果原数有小数部分,则将处理后的整数部分和小数部分拼接一下,形成最终结果;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值