function paddingNum(number) {

    const rod = number < 0 ? '-' : ''
    const originalValue = `${Math.abs(number)}`.split('.')
    const reverseValue = [...originalValue[0]].reverse()
    const dotValue = originalValue[1] ? `${originalValue[1]}` : ''
    const mergeValue = []

    for (let i = 0; i < reverseValue.length; i++) {
        if (i % 3 === 0 && i !== 0) {
            mergeValue.push(',')
        }
        mergeValue.push(reverseValue[i])
        
        if (i === reverseValue.length - 1) {
            return `${rod}${mergeValue.reverse().join('')}${dotValue}`
        }
    }
}

发表于 2020-08-18 17:25:15 回复(0)
function paddingNum(num) {
  const params = Math.abs(num).toString().split('.');
  const f = params[0].split("").reverse();
  var cf = Object.assign(f);
  let reset = '';
  for (var i = 0; i < f.length; i++) {
    if ((i + 1) % 4 == 0) {
      cf.splice(i, 0, ',');
    }
  }
  const fc = cf.reverse().join('');
  if (params[1]) {
    reset = '.' + params[1];
  }
  let result = '';
  if (num < 0) {
    result = '-' + fc + reset
  } else {
    result = fc + reset
  }
  return result;
}


发表于 2020-07-21 15:24:00 回复(0)
考虑可以用栈,如果,遇到没有逗 ·  号,当栈的长度为3时,清空栈(把3个数字给弹出去)。
如果遇到 · 就不管,并且前端,重新开始执行没有逗号的操作

发表于 2020-06-09 13:52:01 回复(0)
djd头像 djd
/**
 * @description 分割数字,每隔三位使用逗号分割一次
 * @param {number}
 * @returns {string}
 */
function fn(num) {
  num = num.toString();
  let hasFuHao = num[0] == '-';
  console.log('hasFuHao', hasFuHao);
  if (hasFuHao) {
    num = num.substring(1);
  }
  let numArr = num.split('.');
  let str1 = numArr[0];
  let length = str1.length;
  let finalArr = [];
  while (length > 0) {
    if (length - 3 < 0) {
      finalArr.push(str1);
      break;
    }
    finalArr.push(str1.substring(length - 3));
    str1 = str1.substring(0, length - 3);
    length = str1.length;
  }
  let result = finalArr.reverse().join(',').toString();
  if (numArr[1]) {
    result += '.' + numArr[1];
  }
  if (hasFuHao) {
    result = '-' + result;
  }
  return result;
}

发表于 2021-01-03 17:35:50 回复(0)
const paddingNum = num => (num).toLocaleString('en-US')
发表于 2020-07-22 10:14:07 回复(2)
function paddingNum(inputNum){
    let flag = inputNum > 0 ? true : false;
    let numArr = Math.abs(inputNum).toString().split('.');
    let right = numArr[1] ? '.'+numArr[1] : '';
    let left = numArr[0];
    let temp = '';
    while(left.length > 3){
        temp = ',' + left.slice(-3) + temp;
        left = left.slice(0,left.length-3);
    }
    return flag? left+temp + right : '-'+left+temp+right;
}

发表于 2020-07-04 22:47:59 回复(2)
 function paddingNum(number){
        return number.toLocaleString();
  }
发表于 2020-06-10 15:51:03 回复(0)
function pinddingNum(num) {
  num = num.toString().split("")
  let n = num.findIndex(e => e === '.')
  n === -1 ? n = num.length : ''//没有小数点,有小数点

  for (let i = n - 3; i > 0; i -= 3) {//最后的位置不用逗号
    num.splice(i, 0, ",")
  }

  return num.join("")
}


发表于 2023-06-28 16:48:06 回复(0)

简洁的代码

function paddingNumber(number) {
    // 转化成字符串
    let stringNumber = String(number)
    // 如果含有小数要分开整数和小数
    let splitStringNumber = stringNumber.split(".");
    // 定义一个前缀,确定是不是负数
    let prefix = splitStringNumber[0][0] === "-" ? "-" : "";
    // 对整数部分先反转字符串,再三个数字三个数字匹配,得出的结果是倒序的分割后的数组,然后用逗号拼接,再反转,再拼接即可
    let result = splitStringNumber[0].split('').reverse().join('').match(/\d{1,3}/g).join(',').split('').reverse().join('')
    // 返回符号位+整数部分+[小数部分,如果有的话]
    return `${prefix}${result}${splitStringNumber[1] ? "." + splitStringNumber[1] : ''}`
}
// 测试用例
console.log(paddingNumber(0));
console.log(paddingNumber(1));
console.log(paddingNumber(12.));
console.log(paddingNumber(12345678.1234));
console.log(paddingNumber(123456789));
console.log(paddingNumber(-123456789));
console.log(paddingNumber(-123456789.123));

图片说明

发表于 2023-03-28 16:28:03 回复(0)
function paddingNum (num) {
    let fuhao = num < 0 ? '-' : ''
    let arr = `${Math.abs(num)}`.split('.')
    let arr1 = [...arr[0]].reverse()
    let arr2 = []
    for (let i = 0; i < arr1.length; i++) {
        if (i !== 0 && i % 3 === 0) {
            arr2.push(',')
        }
        arr2.push(arr1[i])
    }
    let left = arr2.reverse().join('')
    let right = arr[1] ? `.${arr[1]}` : ''
    return `${fuhao}${left}${right}`
}
发表于 2022-06-15 17:32:51 回复(0)
大佬的翻译版
 function seperator(num){
            //记录下是正数还是负数
            let flag = num > 0 ? true : false;
            //取绝对值并转化为字符串
            num = Math.abs(num)+"";
            //获取整数部分和小数部分
            let [numberLeft,numberRight] = num.split(".");
            //没有小数位就用空字符串填充下
            numberRight = numberRight ? "."+numberRight : "";
            //暂存数字
            let temp = "";
            while(numberLeft.length > 3){
                //每次截取整数部分后3个字符串
                temp =  "," + numberLeft.slice(-3) + temp;
                //将整数部分除去最后三个字符串
                numberLeft = numberLeft.slice(0,numberLeft.length - 3);
            }
            //循环结束,最后长度小于3,就将剩余的连接上
            return flag ? numberLeft+temp+numberRight : "-"+numberLeft+temp+numberRight;
        }


发表于 2022-05-25 14:56:51 回复(0)
function paddingNum (num) {
    return num.toString().replace(/\d+/, function (n) {
    return n.replace(/(\d)(?=(\d{3})+$)/g, function ($1) {
      return $1 + ','
    })
  })
}

发表于 2022-05-16 11:34:06 回复(0)
    let s=""
    function ttd(nums){
        let n=nums.toString()
        let substr=n.split(".")
        let int=substr[0],flops=substr[1]
        let li=int.length
        let fl=flops.length
        if(int.length<=3){
            s=int+s+","
        }else{
            let res=[]
            while(li>3){
                res.unshift(int.slice(li-3,li))
                int=int.slice(0,li-3)
                li=int.length
                s=res[0]+","+s
                res.pop()
            }
            s=int+","+s
            console.log(s)
        }
        s=s.slice(0,s.length-1)
        if(flops.length<=3){            
            s=s+"."+flops
        }else{
            let res=[]
            s=s+"."
            while(fl>3){
                res.unshift(flops.slice(0,3))
                flops=flops.slice(3,fl)
                fl=flops.length
                s=s+res[0]+","
                res.pop()
            }
            s=s+flops         
        }
        return s
    }
    ttd(0.4221)
发表于 2022-04-20 17:57:29 回复(1)
function splitByThree(str) {
    let result = ''
    for (let i = str.length - 1; i >= 0; --i) {
        result = str[i] + result
        if ((i - str.length) % 3 === 0 && i !== 0) result = ',' + result
    }
    return result
}
function paddingNumber(n) {
    let [integer, decimal] = n.split('.')
    return splitByLength(integer) + ('.' + decimal || '')
}


发表于 2021-09-10 12:22:00 回复(0)
function paddingNum(value){
let str =''
    if(!isNaN(value)){
       let arr = value.toString().split('')
      let arr1 = arr.slice(0,arr.indexOf('.')).reverse()
        let arr2 = arr.slice(arr.indexOf('.'))
        let res = []
arr1.forEach((item, index)=>{
         res.push(item)
         if(((index+1)%3) == 0 && index!=(arr1.length-1)){
          res.push(',')}
})
      res = res.reverse()
    return  res.concat(arr2).join('')   

    } else {
   str = '错误!参数非数值'
    return str
}
}

发表于 2021-02-05 15:22:30 回复(0)
function fun1 (input) {
    // index 标记正负
    let index = input < 0 ? true : false
    // 有无小数位
    let second = (input + '').split`.`[1? true : false
    let num = (Math.abs(input) + '').split`.`[0], numArr = []
    for (let i = 1; i < num.length; i++) {
        if (i % 3 != 0) {
            numArr.push('' + num[i])
        }
        else {
            numArr.push(',')
            numArr.push('' + num[i])
        }
    }
    // return index ? `-${num[0]}${numArr.join``} ('.' + input + '').split`.`[1] : ''` : `${num[0]}${numArr}. ('.' + input + '').split`.`[1] : ''`
    return index ? `-${num[0] + ''}${numArr.join``} `.${(input + '').split`.`[1]: ''}` : `${num[0] + ''}${numArr.join``} `.${(input + '').split`.`[1]: ''}`
}
发表于 2020-09-08 08:46:30 回复(0)
function paddingNum(num) {
    let [integer, dicimal] = num.toString().split(".");
    dicimal = !dicimal ? "" :`.${dicimal}`;
    let r = (integer.length) % 3;
    if(r > 0) {
        integer = integer.slice(0, r) + "," + integer.slice(r, integer.length).match(/\d{3}/g).join(",");
    }else {
        integer = integer.match(/\d{3}/g).join(",");
    }
    return `${integer}${dicimal}`;
}
console.log(paddingNum(344223));

发表于 2020-08-16 16:47:51 回复(0)
<p>function paddingNum(oldstr){</p><p> var newstr=oldstr.replace(/(\d)(?=\d{3})+(\.|$)/g),”$1.”)</p><p>}</p><p><br></p>
发表于 2020-07-17 17:18:58 回复(0)
function test(number){

    let str = number.toString().split('.');         // 分隔常熟 与 小数

    let changshu = Array.from(str[0]);              // 常数转换成数组好操作

    let falg = (changshu[0] == '-') ? true : false; // 判断常熟是否为负数

    changshu.reverse();                             // 翻转,好每隔三位进行一次添加逗号

    let xiaoshu =str[1]?str[1]:'';                  // 判断小数是否存在

    if(falg) {                                      // 如果为负数 将其移除数组 后面再添加回来
        changshu.pop();
    }

    // 这里进行添加逗号操作
    for(var i = 3; i < changshu.length; i += 4) {
        changshu.splice(i,0,',');
    }

    changshu.reverse();                             // 翻转回来

    let result = '';

    changshu.forEach(element => {                   // 转换成字符串
        result += element;
    });

    if(falg) {                                      // 负数添加回来
        result = '-' + result;
    }

    if(xiaoshu) {                                   // 小数添加进去
        result += '.' + xiaoshu;
    }

    console.log(result)                            // 完工
    return result;
}
发表于 2020-06-26 17:02:21 回复(0)
function paddingNum(num){
 var arr= num.toString().split('.')
 var arr1 = arr[0].split('').reverse()
 // var arr[1] = arr[1]==undefined ? '':arr[1]
 if(arr[1]==undefined){
  arr[1] = ''
 }else{
  arr[1]='.'+arr[1]
 }
 var count = 0
  var j = 1
  var i 
 while(true){  
  i = 3*j+count;  
  if(isNaN(arr1[i]) || k<=3){
   var integ = arr1.reverse().join('')
   return integ  + arr[1]
  }else{
   arr1.splice(i,0,',')
   count++
   j++
   var k=arr1.slice(i).length
  }
 }
}
发表于 2020-06-13 21:19:40 回复(0)