JS千分位转换

千分位转换

    /**
     * 千分位转换,将数字转换为逗号隔开的千分位格式
     * @param num 带转换的数字
     * @param cent 保留小数位
     * @returns {*}
     */
function toThousands(num, cent) {
        if (null == num) {
            return "";
        }
        var tmp = num * 1;
        if (isNaN(tmp)) {
            return num;
        }
        var targetNum = cent ? tmp.toFixed(cent) : tmp;
        targetNum = targetNum.replace(/(\d)(?=(\d{3})+\.)/g, '$1,');//使用正则替换,每隔三个数加一个','
        return targetNum;
    }
### 使用 JavaScript 实现数字的千分位格式化 在 JavaScript 中,将数字格式化为千分位形式是一种常见的需求,特别是在处理货币或大数值的显示时。以下是几种常见的实现方法: #### 方法一:使用 `Number.prototype.toLocaleString()` 该方法是 JavaScript 内置的方法,可以直接将数字转换千分位格式的字符串。 ```javascript const number = 1234567.89; const formattedNumber = number.toLocaleString(); console.log(formattedNumber); // 输出: 1,234,567.89 ``` 这种方法简单且高效,适用于大多数场景[^3]。 #### 方法二:使用正则表达式 通过正则表达式可以灵活地实现千分位格式化,适用于需要自定义格式的情况。 ```javascript function toThousands(n) { const num = Number(n); const re = /\d{1,3}(?=(\d{3})+$)/g; const n1 = num.toFixed(2).replace(/^(\d+)((\.\d+)?)$/, function(s, s1, s2) { return s1.replace(re, '$&,') + s2; }); return n1; } console.log(toThousands(1000000)); // 输出: 1,000,000.00 ``` 此方法通过正则表达式匹配每三位数字,并在其后添加逗号,从而实现千分位格式化[^2]。 #### 方法三:手动拼接整数部分和小数部分 通过将数字拆分为整数部分和小数部分,再分别处理,可以更灵活地控制格式化过程。 ```javascript function format_with_array(number) { const arr = String(number).split('.'); const int = arr[0].split(''); const float = arr[1] || ''; let r = ''; int.reverse().forEach(function (v, i) { if (i !== 0 && i % 3 === 0) { r += v + ','; } else { r += v; } }); return `${r.split('').reverse().join('')}${!!float ? '.' + float : ''}`; } console.log(format_with_array('938765432.02098')); // 输出: 938,765,432.02098 ``` 此方法通过遍历整数部分的每一位,并在每三位后添加逗号,最后将结果反转以恢复正确的顺序[^1]。 #### 方法四:使用字符串替换 通过正则表达式直接对字符串进行替换,可以快速实现千分位格式化。 ```javascript let str = "1234567890"; let reg = /(?!^)(?=(\d{3})+$)/g; console.log(str.replace(reg, ',')); // 输出: 1,234,567,890 ``` 此方法利用正则表达式匹配每三位数字,并在其前插入逗号,从而实现千分位格式化。 ### 总结 以上方法均可以实现数字的千分位格式化,具体选择哪种方法取决于实际需求。如果需要快速实现且格式较为简单,推荐使用 `Number.prototype.toLocaleString()`。如果需要更复杂的格式化逻辑,则可以使用正则表达式或手动拼接的方法。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值