千分符切换取小数点后两位四舍五入

427 阅读1分钟
 function thousands(num){
    num = num.toString() // 将输入的数字转换为字符串
    if(/^-?\d+\.?\d+$/.test(num)){ //判断输入内容是否为整数或小数
       if(/^-?\d+$/.test(num)){
           num = num + ",00"
        }else{
            num = num.replace(/\./,",")
        }
       
        while(/\d{4}/.test(num)){
            /**
             * 判断是否有4个相连的数字,如果有则需要继续拆分,否则结束循环;
             * 将4个相连以上的数字分成两组,第一组$1是前面所有的数字(负数则有符号),
             * 第二组第一个逗号及其前面3个相连的数字;
             * 将第二组内容替换为3个相连的数字
            */
           num = num.replace(/(\d+)(\d{3}\,)/, '$1,$2')
        }
        num = num.replace(/\,(\d*)$/,'.$1')
        return num
     }
}
thousands(1876358422.9700000286102)
//"1,876,358,422.97"
thousands(27148763646.049999237060547)
//"27,148,763,646.05"
// 千分符转换、小数点后四舍五入 (亲测有效)
export function thousands(num){
  num = Number(num)
  num = num.toFixed(2)
  let re=/\d{1,3}(?=(\d{3})+$)/g;
  let n1=num.replace(/^(\d+)((\.\d+)?)$/,function(s,s1,s2){return s1.replace(re,"$&,")+s2;});
  return n1 ;
}