JavaScript中将金钱格式化

来源:互联网 发布:法院网络司法拍卖平台 编辑:程序博客网 时间:2024/04/28 19:38

JavaScript中将金钱格式化,三位一加逗号。

formatMyCurrency=function(number, decimals, spliter, dot) {number = (number + '').replace(/[^0-9+\-Ee.]/g, '');var n = !isFinite(+number) ? 0 : +number;//判断是否是无穷数,不是无穷数n赋值为0var prec = !isFinite(+decimals) ? 0: Math.abs(decimals);var sep = (typeof spliter === 'undefined') ? ',': spliter;var dec = (typeof dot === 'undefined') ? '.': dot;var s = '';var toFixedFix = function(n, prec) {var k = Math.pow(10, prec);return '' + Math.round(n * k) / k;};s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');if (s[0].length > 3) {s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);}if ((s[1] || '').length < prec) {s[1] = s[1] || '';s[1] += new Array(prec - s[1].length + 1).join('0');}return s.join(dec);}


number = (number + '').replace(/[^0-9+\-Ee.]/g, '');

1、为什么number要+‘’ ?因为replace只处理string,所以number + ''将number强转成字符串。

2、replace(/[^0-9+\-Ee.]/g, '')    这个正则表达式的意思是过滤0-9以及E和e除了这些全转成空。

var n = !isFinite(+number) ? 0 : +number;

3、isFinite函数是判断参数是否是无穷数的。number前有一个加号,这个加号是为了防止number是undifind的,如果是underfind则number会被转换成NaN,如果不判断则会发生异常。

var prec = !isFinite(+decimals) ? 0: Math.abs(decimals);

4、不理解为什么要写这个?

var sep = (typeof spliter === 'undefined') ? ',': spliter;

5、这行代码定义了分割方式,默认是逗号

var dec = (typeof dot === 'undefined') ? '.': dot;

6、我猜测这行代码是小数点....

var k = Math.pow(10, prec);

7、Math.pow 返回数字 x 的 y 次幂。

Math.round() 我们数学中常用到的四舍五入取整。

0 0
原创粉丝点击