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}` } } }
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; }
/** * @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; }
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; }
简洁的代码
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));
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; }
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 || '') }
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 } }
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));