数据处理——给数字加千分位标识

导读:本篇文章讲解 数据处理——给数字加千分位标识,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

千分位添加的方式,一般都是数组截取法,字符串截取法等等,但存在当为负数金额的时候,可能会存在 -,123.33 的情况,还需要考虑到负数的情况。(考虑情况较多)。使用正则匹配转化会省略考虑到一些情况,方便使用。下面我将正则法,数组转化截取法(字符串截取转化法和数组截取转化原理相同)的代码发在下面:

定义一个函数 moneyRegex ,形参number是要处理的金额数据,fix是需要对数据保留的小数位数。

正则法:建议使用正则匹配的方式添加千分位,可以直接避免负数、数组字符串之间转化的情况。如下代码:(推荐)

        function moneyRegex(number,fix) {
            if(fix){    //当传入保留小数位数时,先讲number保留相应相应小数,再添加千分位
                number=number.toFixed(fix)
            }
            return !(number + '').includes('.') ?
                (number + '').replace(/\d{1,3}(?=(\d{3})+$)/g, (match) => {
                    return match + ',';
                }) :
                (number + '').replace(/\d{1,3}(?=(\d{3})+(\.))/g, (match) => {
                    return match + ',';
                })
        }


        console.log(moneyRegex(-122120101.23212564));

打印结果:数据处理——给数字加千分位标识

定义一个函数 moneyArray,形参number是要处理的金额数据,fix是需要对数据保留的小数位数。

数组转化截取法:

        function moneyArray(number,fix) {
            //0. 保留的小数位数
            if(fix){
                number=number.toFixed(fix)
            }
            //1. 先判断是否是负数
            let isMinus=String(number).split('')[0]==='-';
            let data=isMinus?String(number).split('').splice(1).join(''):number;
            //2. 转为字符串,并按照.拆分
            const arr = (data + '').split('.');
            //3. 整数部分再拆分
            const int = arr[0].split('');
            //4. 小数部分
            const fraction = arr[1] || '';
            //5. 返回的变量
            let r = '';
            int.reverse().forEach(function(v, i) {
                // 非第一位并且是位值是3的倍数,添加,
                if (i !== 0 && i % 3 === 0) {
                    r = v + ',' + r;
                } else {
                    r = v + r;
                }
            });
            //6. 负号,整数部分和小数部分拼接
            return isMinus ? '-'+ r + (!!fraction ? '.' + fraction : '') : r + (!!fraction ? '.' + fraction : '');
        }


        console.log(moneyArray(-122120201.23212564,2));

打印结果:数据处理——给数字加千分位标识

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/66296.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!