千分位数字格式化(用逗号隔开 代码已做了修改 支持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 相关文章推荐
在JavaScript中实现命名空间
Nov 23 Javascript
pjblog中的UBBCode.js
Apr 25 Javascript
百度地图给map添加右键菜单(判断是否为marker)
Mar 04 Javascript
jQuery链式调用与show知识浅析
May 11 Javascript
jQuery插件EasyUI设置datagrid的checkbox为禁用状态的方法
Aug 05 Javascript
jQuery过滤选择器经典应用
Aug 18 Javascript
js 判断各种数据类型的简单方法(推荐)
Aug 29 Javascript
常用Javascript函数与原型功能收藏(必看篇)
Oct 09 Javascript
微信小程序 五星评价功能的实现
Mar 09 Javascript
vue实现nav导航栏的方法
Dec 13 Javascript
使用layui定义一个模块并使用的例子
Sep 14 Javascript
JavaScript indexOf()原理及使用方法详解
Jul 09 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
使用TinyButStrong模板引擎来做WEB开发
2007/03/16 PHP
分享下php5类中三种数据类型的区别
2015/01/26 PHP
PHP编程之设置apache虚拟目录
2016/07/08 PHP
PHP中单例模式与工厂模式详解
2017/02/17 PHP
PHP字符串和十六进制如何实现互相转换
2020/07/16 PHP
Prototype使用指南之range.js
2007/01/10 Javascript
向fckeditor编辑器插入指定代码的方法
2007/05/25 Javascript
基于Jquery实现的一个图片滚动切换
2012/06/21 Javascript
jQuery基于muipicker实现仿ios时间选择
2016/02/22 Javascript
JavaScript弹出对话框的三种方式
2016/03/23 Javascript
使用vs code开发Nodejs程序的使用方法
2017/09/21 NodeJs
浅谈vue中使用图片懒加载vue-lazyload插件详细指南
2017/10/23 Javascript
vue组件详解之使用slot分发内容
2018/04/09 Javascript
解决layer 动态加载select 失效的问题
2019/09/18 Javascript
Vue 实现把表单form数据 转化成json格式的数据
2019/10/29 Javascript
[02:47]3.19DOTA2发布会 国服成长历程回顾
2014/03/25 DOTA
[07:12]2014DOTA2西雅图国际邀请赛 黑马Liquid专题采访
2014/07/12 DOTA
Python的Bottle框架中实现最基本的get和post的方法的教程
2015/04/30 Python
解读Django框架中的低层次缓存API
2015/07/24 Python
python变量不能以数字打头详解
2016/07/06 Python
Python实现拷贝多个文件到同一目录的方法
2016/09/19 Python
Python自定义简单图轴简单实例
2018/01/08 Python
python矩阵转换为一维数组的实例
2018/06/05 Python
python中单例常用的几种实现方法总结
2018/10/13 Python
python 获取图片分辨率的方法
2019/01/08 Python
浅析matlab中imadjust函数
2020/02/27 Python
Python实现在线批量美颜功能过程解析
2020/06/10 Python
Scrapy中如何向Spider传入参数的方法实现
2020/09/28 Python
Django中使用Celery的方法步骤
2020/12/07 Python
英国最红的高街时尚品牌:Topshop
2016/08/05 全球购物
拾金不昧锦旗标语
2014/06/27 职场文书
谢师宴答谢词
2015/01/05 职场文书
商超业务员岗位职责
2015/02/13 职场文书
停水通知
2015/04/16 职场文书
Vue vee-validate插件的简单使用
2021/06/22 Vue.js
什么是clearfix (一文搞清楚css清除浮动clearfix)
2023/05/21 HTML / CSS