• JS数字格式化(用逗号隔开 代码已做了修改 支持0-9位逗号隔开)


        最近做项目需要我们前端对金额进行千分位格式化(也就是说每三位用逗号隔开),代码已经做了修改  之前的版本是本人疏忽 真对不住大家了!现在已经做了修改 如果还有不完善的地方 请大家多多指教!

       1. 支持用逗号隔开 0-9位 逗号隔开

    JS代码如下:

    /**
             * JS格式化
             * @param number 要格式化的数字
             * @param d [0-9]位 逗号隔开
             */
             
             function numFormat(number,d) {
                
                 var numArrs = ['0','1','2','3','4','5','6','7','8','9'],
                     REG_NUMBER = /^d+(.d+)?$/;
                 
                 d = d || 3; // 不传 是3位 千分位
    
                 if(isNumber(number) || isString(number) || REG_NUMBER.test(number)) {
    
                     // 先转换成字符串
                     var toString = number + '',
                         isPoint = toString.indexOf('.'),
                         prefix,   // 前缀
                         suffix,   // 后缀
                         t = '';
        
                     if(isPoint > 0) {
                        prefix = toString.substring(0,isPoint);
                        suffix = toString.substring(isPoint + 1);
    
                     }else if(isPoint == 0) {
                        prefix = '';
                        suffix = toString.substring(1);
    
                     }else {
                        prefix = toString;
                        suffix = '';
                     }
                     
                     if(prefix != '') {
                        prefixArr = prefix.split('').reverse();
    
                        var isArrayIndex = isArray(d,numArrs);
                        if(isArrayIndex > -1) {
    
                            for(var i = 0, ilen = prefixArr.length; i < ilen; i+=1) {
                                t += prefixArr[i] + ((i + 1) % isArrayIndex == 0 && (i + 1) != prefixArr.length ? "," : "");
                            }
                            t = t.split("").reverse().join("");
                            if(suffix != '') {
                                return t + "." + suffix;
                            }else {
                                return t;
                            }
                            
                        }else {
                            return '传入的多少位不正确';
                        }
                        
                     }else if(prefix != '' && suffix == ''){
    
                        return prefix;
    
                     }else if(prefix == '' && suffix != ''){
                        prefix = 0;
    
                        return prefix + suffix;
                     }else {
                         return "有错误";
                     }
                }else {
                    return '传入的要格式化的数字不符合';
                }
                 
             }
             function isArray(item,arrs) {
                for(var i = 0, ilen = arrs.length; i < ilen; i++) {
                    if(item == arrs[i]) {
                        return i;
                    }
                }
                return -1;
             }
             function isNumber(number) {
                return Object.prototype.toString.apply(number) === '[object Number]';
             }
    
             function isString(number) {
                return Object.prototype.toString.apply(number) === ['object String'];
             }

    但是貌似还有一个不完善的地方 就是 我这样调用 console.log(numFormat("1111.00"));  在控制台上 直接输出 1,111 而不是1,111.00 也就是说 如果小数点后面的是 0的话 游览器自动会抹掉后面的0 其他的都正常!本人测试了下 基本符合要求 如有不完善的地方 请大家多多指教!

  • 相关阅读:
    IOS、java支持DES加密
    多线程——@synchronized(object)
    LSM树存储模型
    System.setProperty()
    Filter及FilterChain的使用具体解释
    Java有用经验总结--Swing篇
    POJ3342——Party at Hali-Bula
    Hadoop-2.4.1学习之Writable及事实上现
    OpenCV 编程简单介绍(矩阵/图像/视频的基本读写操作)
    Android中Context具体解释 ---- 你所不知道的Context
  • 原文地址:https://www.cnblogs.com/tugenhua0707/p/3458661.html
Copyright © 2020-2023  润新知