5个javascript的数字格式化函数

来源:互联网 发布:数控铣编程简单无弧线 编辑:程序博客网 时间:2024/05/29 09:25
Javascript没有任何内建的格式化函数,这里我们通过Google收集了5个javascript的数字格式化函数,希望对于大家的web开发能够带来方便。十进制四舍五入这两段代码帮助你做到四舍五入,对于你显示价格或者订单比较有用:代码1: view sourceprint?01 function CurrencyFormatted(amount) {  02     var i = parseFloat(amount);  03     if(isNaN(i)) { i = 0.00; }  04     var minus = '';  05     if(i < 0) { minus = '-'; }  06     i = Math.abs(i);  07     i = parseInt((i + .005) * 100);  08     i = i / 100;  09     s = new String(i);  10     if(s.indexOf('.') < 0) { s += '.00'; }  11     if(s.indexOf('.') == (s.length - 2)) { s += '0'; }  12     s = minus + s;  13     return s;  14 }  15     16 /**  17 *   Usage:  CurrencyFormatted(12345.678);  18 *   result: 12345.68  19 **/ 代码2:view sourceprint?01 function format_number(pnumber,decimals){  02     if (isNaN(pnumber)) { return 0};  03     if (pnumber=='') { return 0};  04         05     var snum = new String(pnumber);  06     var sec = snum.split('.');  07     var whole = parseFloat(sec[0]);  08     var result = '';  09         10     if(sec.length > 1){  11         var dec = new String(sec[1]);  12         dec = String(parseFloat(sec[1])/Math.pow(10,(dec.length - decimals)));  13         dec = String(whole + Math.round(parseFloat(dec))/Math.pow(10,decimals));  14         var dot = dec.indexOf('.');  15         if(dot == -1){  16             dec += '.';  17             dot = dec.indexOf('.');  18         }  19         while(dec.length <= dot + decimals) { dec += '0'; }  20         result = dec;  21     } else{  22         var dot;  23         var dec = new String(whole);  24         dec += '.';  25         dot = dec.indexOf('.');      26         while(dec.length <= dot + decimals) { dec += '0'; }  27         result = dec;  28     }    29     return result;  30 }  31     32 /**  33 *   Usage:  format_number(12345.678, 2);  34 *   result: 12345.68  35 **/ 添加逗号这俩段代码帮助你添加逗号到每三位数字中,这让大的数字比较容易查看。view sourceprint?01 function CommaFormatted(amount) {  02     var delimiter = ","; // replace comma if desired  03     amount = new String(amount);  04     var a = amount.split('.',2)  05     var d = a[1];  06     var i = parseInt(a[0]);  07     if(isNaN(i)) { return ''; }  08     var minus = '';  09     if(i < 0) { minus = '-'; }  10     i = Math.abs(i);  11     var n = new String(i);  12     var a = [];  13     while(n.length > 3)  14     {  15         var nn = n.substr(n.length-3);  16         a.unshift(nn);  17         n = n.substr(0,n.length-3);  18     }  19     if(n.length > 0) { a.unshift(n); }  20     n = a.join(delimiter);  21     if(d.length < 1) { amount = n; }  22     else { amount = n + '.' + d; }  23     amount = minus + amount;  24     return amount;  25 }  26     27 /**  28 *   Usage:  CommaFormatted(12345678);  29 *   result: 12,345,678  30 **/ 代码2:view sourceprint?01 function addCommas(nStr) {  02     nStr += '';  03     var x = nStr.split('.');  04     var x1 = x[0];  05     var x2 = x.length >; 1 ? '.' + x[1] : '';  06     var rgx = /(d+)(d{3})/;  07         08     while (rgx.test(x1)) {  09         x1 = x1.replace(rgx, '$1' + ',' + '$2');  10     }  11         12     return x1 + x2;  13 }  14     15 /**  16 *   Usage:  addCommas(12345678);  17 *   result: 12,345,678  18 **/ 数字格式化,来自PHP这段javascript代码功能设计来自PHP的nubmer_format功能。能够四舍五入并且加入逗号分隔。而且可以自定义10进制分隔。view sourceprint?01 function number_format (number, decimals, dec_point, thousands_sep) {  02     03     number = (number + '').replace(/[^0-9+-Ee.]/g, '');  04     var n = !isFinite(+number) ? 0 : +number,  05         prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),  06         sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,  07         dec = (typeof dec_point === 'undefined') ? '.' : dec_point,  08         s = '',  09         toFixedFix = function (n, prec) {  10             var k = Math.pow(10, prec);  11             return '' + Math.round(n * k) / k;  12         };  13     // Fix for IE parseFloat(0.55).toFixed(0) = 0;  14     s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');  15     if (s[0].length > 3) {  16         s[0] = s[0].replace(/B(?=(?:d{3})+(?!d))/g, sep);  17     }  18     if ((s[1] || '').length < prec) {  19         s[1] = s[1] || '';  20         s[1] += new Array(prec - s[1].length + 1).join('0');  21     }  22     return s.join(dec);  23 }  24     25 /**  26 *   Usage:  number_format(123456.789, 2, '.', ',');  27 *   result: 123,456.79  28 **/ 添加一个英文的排序后缀 view sourceprint?01 Number.prototype.toOrdinal = function() {  02     var n = this % 100;  03     var suffix = ['th', 'st', 'nd', 'rd', 'th'];  04     var ord = n < 21 ? (n < 4 ? suffix[n] : suffix[0]) : (n % 10 > 4 ? suffix[0] : suffix[n % 10]);  05     return this + ord;  06 }  07     08 /*  09 *   Usage:  10 *   var myNumOld = 23  11 *   var myNumNew = myNumOld.toOrdinal()  12 *   Result: 23rd  13 */ 除去非数字的字符view sourceprint?01 function stripNonNumeric( str )  02 {  03   str += '';  04   var rgx = /^d|.|-$/;  05   var out = '';  06   for( var i = 0; i < str.length; i++ )  07   {  08     if( rgx.test( str.charAt(i) ) ){  09       if( !( ( str.charAt(i) == '.' && out.indexOf( '.' ) != -1 ) ||  10              ( str.charAt(i) == '-' && out.length != 0 ) ) ){  11         out += str.charAt(i);  12       }  13     }  14   }  15   return out;  16 }  17     18 /*  19 *   Usage: stripNonNumeric('123et45dhs6.789');  20 *   Result: 123456.789  21 */   
原创粉丝点击