手撕数字千分位展示方法
function formatNumberWithCommas(number) {
let numberStr = number.toString();
let formattedNumber = '';
let decimalSeparatorIndex = numberStr.indexOf('.');
// 处理整数部分
let integerPart = numberStr;
if (decimalSeparatorIndex !== -1) {
integerPart = numberStr.slice(0, decimalSeparatorIndex);
}
let integerPartLength = integerPart.length;
let numGroup = Math.floor(integerPartLength / 3); // 计算逗号分组的数量
let numDigitsFirstGroup = integerPartLength % 3; // 第一组逗号前的位数
// 处理第一组逗号前的位数
if (numDigitsFirstGroup > 0){
formattedNumber += integerPart.substr(0, numDigitsFirstGroup);
if (numGroup > 0) {
formattedNumber += ',';
}
}
// 处理剩余的逗号分组
let startPos = numDigitsFirstGroup;
for (let i = 0; i < numGroup; i++) {
formattedNumber += integerPart.substr(startPos, 3);
startPos += 3;
if (i !== numGroup - 1) {
formattedNumber += ',';
}
}
// 处理小数部分
if (decimalSeparatorIndex !== -1) {
formattedNumber += numberStr.slice(decimalSeparatorIndex);
}
return formattedNumber;
}
// 示例用法
const number = 1234567.89;
const formattedNumber = formatNumberWithCommas(number);
console.log(formattedNumber); // 输出:1,234,567.89
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。