js将金额专成每隔3位数加逗号,比如 12345.00 转成 12,345.00;
懒得解释具体代码如下
1 //分割 2 String.prototype.joinByNum = function(num, deli){ 3 (typeof num == 'undefined' || num == 0 || num == '' ) && (num = 3); 4 (typeof deli == 'undefined' || deli == '') && (deli = ','); 5 var oristr = this.toString().replace(/^s*|s*$|¥|,/g, ''),//去除了一些特殊符号以及空格 6 i = oristr.length - 1, 7 lastIndex = oristr.lastIndexOf('.'), 8 str = '', 9 index = 0; 10 if(isNaN(oristr)) return oristr; 11 (lastIndex !== -1) && (i = lastIndex - 1); 12 for (; i >= 0; i--) { 13 str = oristr[i] + str; 14 if ( i !== 0 && ++index % num === 0) { 15 str = deli + str; 16 } 17 } 18 str += lastIndex !== -1 ? (function(){ 19 return Number(oristr.substr(lastIndex)).toFixed(2).substr(1); 20 })() : '.00'; 21 22 return str; 23 }; 24 25 //钱分割 26 Number.prototype.joinByNum = function(){ 27 return ''.joinByNum.apply(''+ this, arguments); 28 };
测试结果:
old:789456123.22
new:789,456,123.22
old:10154344
new:10,154,344.00
貌似num里有个方法,所以又改了下。注意:这个toLocaleString貌似有点问题。比如safari就不会转。
//钱分割 Number.prototype.fomatMoney = function(){ var str = this.toLocaleString(), arr = str.split('.'); if (arr.length < 2) { str = arr[0]+ '.00'; }else{ str = arr[0] + Number(arr[1]).toFixed(2).substr(1); } return str; }; //钱分割 String.prototype.fomatMoney = function(){ var oristr = this.toString(); if(oristr.indexOf(',') !== -1) return oristr; return (0).fomatMoney.apply(Number(oristr), arguments); };