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 */