问题
1.函数传递数字,返回以三位一个逗号值
1.正则表达方式
思路:
1.将数字强行转换成数字;
2.将数字以小数点分割;
3.将分割前面的使用这则表达替换成逗号
4.返回结果;
function NumFun(num){
const numList = Number(num).split('.');
const num1= numList[0].replace(/\B(?=(\d{3})+(?!\d))/g,',')
const num2 = numList[1]|| ''
return `${num1}.${num2}`
}
NUmFn(122233.1121)
function Num(num,n) {
const nums= Number(num).toFixed(n);
const numsList = nums.split('.');
const integerPart = numsList[0];
const decimalPart = numsList[1] || '';
const formattedInteger = integerPart.replace(/\B(?=(\d{3})+(?!\d))/g,',');
return `${formattedInteger}.${decimalPart}`
}
console.log(Num(10000000.11222,2));
2.js方式
思路:
1.将数字强行转换数字,并以小数点分割;
2.将拿到整数反转进行循环;
3.在循环中判断3倍速位置的,插入逗号;
4.将得到的值转换字符;
5.返回结果;
function Num2(num,n){
const nums= Number(num).toFixed(n);
const NumList = nums.split('.');
const integerPart = [...NumList[0]].reverse()
const decimalPart = NumList[1] || '';
for (let i = 0; i < integerPart.length; i++) {
if ((i + 1) % 4 === 0) {
integerPart.splice(i, 0, ',')
}
}
return integerPart.reverse().join('')+'.'+decimalPart
}
console.log(Num2(10121212112.111,2));
这里切记使用foreach