美文网首页
js将数字转化为千分位,1234567转化为1,234,567

js将数字转化为千分位,1234567转化为1,234,567

作者: keknei | 来源:发表于2022-05-19 17:30 被阅读0次
    1. 用正则表达式转化为千分位
    function numFormat(num){
     const res=num.toString().replace(/\d+/, function(n){ // 先提取小数点前后的整数部分
     //(\d)(?=(\d{3})正则的意思是匹配连续三个数结尾的数字,例如1234,1后面有234连续三个数的数字,就可以匹配上,匹配的是1这个数字。如果是123,因为1后面是两位数,所以就匹配不上了
       return n.replace(/(\d)(?=(\d{3})+$)/g,function($1){
         return $1+",";
        });
      })
      return res;
    }
    
    let a=1234567894532;
    let b=673439.4542;
    console.log(numFormat(a)); // "1,234,567,894,532"
    console.log(numFormat(b)); // "673,439.4542"
    
    
    1. 用js自带的方法toLocaleString()
    let a=1234567894532;
    let b=673439.4542;
    
    console.log(a.toLocaleString());  // "1,234,567,894,532"
    console.log(b.toLocaleString());  // "673,439.454"  (小数部分四舍五入了)
    

    需要注意的是这个函数会把有小数的数字,会四舍五入的保留三位小数。另外这个函数说是有区域的局限性,可能在国内是逗号,到国外就是别的符号了,但是在国内用,一般也没事儿

    1. 将数字转换为字符数组,再循环整个数组, 每三位添加一个分隔逗号,最后再合并成字符串。因为分隔符在顺序上是从后往前添加的:比如 1234567添加后是1,234,567 而不是 123,456,7 ,所以方便起见可以先把数组倒序,添加完之后再倒序回来,就是正常的顺序了。要注意的是如果数字带小数的话,要把小数部分分开处理。
    function numFormat(num){
        num=num.toString().split(".");  // 分隔小数点
        var arr=num[0].split("").reverse();  // 转换成字符数组并且倒序排列
        var res=[];
        for(var i=0,len=arr.length;i<len;i++){
          if(i%3===0&&i!==0){
             res.push(",");   // 添加分隔符
          }
          res.push(arr[i]);
        }
        res.reverse(); // 再次倒序成为正确的顺序
        if(num[1]){  // 如果有小数的话添加小数部分
          res=res.join("").concat("."+num[1]);
        }else{
          res=res.join("");
        }
        return res;
    }
    
    let a=1234567894532;
    let b=673439.4542;
    console.log(numFormat(a)); // "1,234,567,894,532"
    console.log(numFormat(b)); // "673,439.4542"
    
    

    相关文章

      网友评论

          本文标题:js将数字转化为千分位,1234567转化为1,234,567

          本文链接:https://www.haomeiwen.com/subject/xsbtprtx.html