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


Posted in Javascript onDecember 05, 2013

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

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 其他的都正常!本人测试了下 基本符合要求 如有不完善的地方 请大家多多指教!

Javascript 相关文章推荐
jQueryUI写一个调整分类的拖放效果实现代码
May 10 Javascript
IE的fireEvent方法概述及应用
Feb 22 Javascript
JavaScript函数详解
Nov 17 Javascript
JS判断输入字符串长度实例代码(汉字算两个字符,字母数字算一个)
Aug 02 Javascript
JS中用childNodes获取子元素换行会产生一个子元素
Dec 08 Javascript
jQuery验证表单格式的使用方法
Jan 10 Javascript
详解bootstrap的modal-remote两种加载方式【强化】
Jan 27 Javascript
JS小球抛物线轨迹运动的两种实现方法详解
Dec 20 Javascript
react 创建单例组件的方法
Apr 26 Javascript
vue2.0页面前进刷新回退不刷新的实现方法
Jul 31 Javascript
Spring boot 和Vue开发中CORS跨域问题解决
Sep 05 Javascript
详解将微信小程序接口Promise化并使用async函数
Aug 05 Javascript
jquery导航制件jquery鼠标经过变色效果示例
Dec 05 #Javascript
javascript拖拽上传类库DropzoneJS使用方法
Dec 05 #Javascript
jquery上传插件fineuploader上传文件使用方法(jquery图片上传插件)
Dec 05 #Javascript
JS获取html对象的几种方式介绍
Dec 05 #Javascript
JS获取URL中的参数数据
Dec 05 #Javascript
jquery插件tooltipv顶部淡入淡出效果使用示例
Dec 05 #Javascript
浅谈JavaScript函数参数的可修改性问题
Dec 05 #Javascript
You might like
PHP小程序自动提交到自助友情连接
2009/11/24 PHP
php 的加密函数 md5,crypt,base64_encode 等使用介绍
2012/04/09 PHP
php中把美国时间转为北京时间的自定义函数分享
2014/07/28 PHP
php include类文件超时问题处理
2015/02/06 PHP
yii2.0使用Plupload实现带缩放功能的多图上传
2015/12/22 PHP
使用PHP连接多种数据库的实现代码(mysql,access,sqlserver,Oracle)
2016/12/21 PHP
laravel5.6实现数值转换
2019/10/23 PHP
详解PHP中curl_multi并发的实现
2020/06/08 PHP
jQuery 方法大全方便学习参考
2010/02/25 Javascript
编写可维护面向对象的JavaScript代码[翻译]
2011/02/12 Javascript
用jquery写的菜单从左往右滑动出现
2014/04/11 Javascript
JS实现简单的顶部定时关闭层效果
2014/06/15 Javascript
跟我学习javascript的闭包
2015/11/16 Javascript
Javascript数组Array基础介绍
2016/03/13 Javascript
AngularJS中的API(接口)简单实现
2016/07/28 Javascript
从零开始学习Node.js系列教程一:http get和post用法分析
2017/04/13 Javascript
解决iView中时间控件选择的时间总是少一天的问题
2018/03/15 Javascript
NodeJS实现不可逆加密与密码密文保存的方法
2018/03/16 NodeJs
微信小程序使用setData修改数组中单个对象的方法分析
2018/12/30 Javascript
Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程
2016/06/14 Python
python 执行shell命令并将结果保存的实例
2018/05/11 Python
pytorch + visdom CNN处理自建图片数据集的方法
2018/06/04 Python
启动Atom并运行python文件的步骤
2018/11/09 Python
python数据处理之如何选取csv文件中某几行的数据
2019/09/02 Python
Python三元运算与lambda表达式实例解析
2019/11/30 Python
adidas泰国官网:adidas TH
2020/07/11 全球购物
银行实习自我鉴定
2013/10/12 职场文书
外联部演讲稿
2014/05/24 职场文书
安全责任书范文
2014/08/25 职场文书
责任书范本
2014/08/25 职场文书
2014年人事专员工作总结
2014/11/19 职场文书
招标保密承诺书
2015/01/20 职场文书
幼儿园托班开学寄语(2015秋季)
2015/05/27 职场文书
毕业证明模板
2015/06/19 职场文书
2019毕业典礼主持词!
2019/07/05 职场文书
Java 数据结构七大排序使用分析
2022/04/02 Java/Android