域名城

分享5个javascript的数字格式化函数

已有 425 次阅读2012-12-13 16:53 |个人分类:javascript| javascript, 数字格式化

Javascript没有任何内建的格式化函数,这里我们通过Google收集了5个javascript的数字格式化函数,希望对于大家的web开发能够带来方便.
十进制四舍五入

这两段代码帮助你做到四舍五入,对于你显示价格或者订单比较有用:

代码1:

function CurrencyFormatted(amount) { var i = parseFloat(amount); if(isNaN(i)) { i = 0.00; } var minus = ''; if(i < 0) { minus = '-'; } i = Math.abs(i); i = parseInt((i + .005) * 100); i = i / 100; s = new String(i); if(s.indexOf('.') < 0) { s += '.00'; } if(s.indexOf('.') == (s.length - 2)) { s += '0'; } s = minus + s; return s; } /** * Usage: CurrencyFormatted(12345.678); * result: 12345.68 **/ 代码2:function format_number(pnumber,decimals){ if (isNaN(pnumber)) { return 0}; if (pnumber=='') { return 0}; var snum = new String(pnumber); var sec = snum.split('.'); var whole = parseFloat(sec[0]); var result = ''; if(sec.length > 1){ var dec = new String(sec[1]); dec = String(parseFloat(sec[1])/Math.pow(10,(dec.length - decimals))); dec = String(whole + Math.round(parseFloat(dec))/Math.pow(10,decimals)); var dot = dec.indexOf('.'); if(dot == -1){ dec += '.'; dot = dec.indexOf('.'); } while(dec.length <= dot + decimals) { dec += '0'; } result = dec; } else{ var dot; var dec = new String(whole); dec += '.'; dot = dec.indexOf('.'); while(dec.length <= dot + decimals) { dec += '0'; } result = dec; } return result; } /** * Usage: format_number(12345.678, 2); * result: 12345.68 **/  添加逗号

这俩段代码帮助你添加逗号到每三位数字中,这让大的数字比较容易查看.

function CommaFormatted(amount) { var delimiter = ","; // replace comma if desired amount = new String(amount); var a = amount.split('.',2) var d = a[1]; var i = parseInt(a[0]); if(isNaN(i)) { return ''; } var minus = ''; if(i < 0) { minus = '-'; } i = Math.abs(i); var n = new String(i); var a = []; while(n.length > 3) { var nn = n.substr(n.length-3); a.unshift(nn); n = n.substr(0,n.length-3); } if(n.length > 0) { a.unshift(n); } n = a.join(delimiter); if(d.length < 1) { amount = n; } else { amount = n + '.' + d; } amount = minus + amount; return amount; } /** * Usage: CommaFormatted(12345678); * result: 12,345,678 **/  代码2:function addCommas(nStr) { nStr += ''; var x = nStr.split('.'); var x1 = x[0]; var x2 = x.length >; 1 ? '.' + x[1] : ''; var rgx = /(d+)(d{3})/; while (rgx.test(x1)) { x1 = x1.replace(rgx, '$1' + ',' + '$2'); } return x1 + x2; } /** * Usage: addCommas(12345678); * result: 12,345,678 **/  

数字格式化,来自PHP

这段javascript代码功能设计来自PHP的nubmer_format功能.能够四舍五入并且加入逗号分隔.而且可以自定义10进制分隔.

 function number_format (number, decimals, dec_point, thousands_sep) { number = (number + '').replace(/[^0-9+-Ee.]/g, ''); var n = !isFinite(+number) ? 0 : +number, prec = !isFinite(+decimals) ? 0 : Math.abs(decimals), sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep, dec = (typeof dec_point === 'undefined') ? '.' : dec_point, s = '', toFixedFix = function (n, prec) { var k = Math.pow(10, prec); return '' + Math.round(n * k) / k; }; // Fix for IE parseFloat(0.55).toFixed(0) = 0; 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); } /** * Usage: number_format(123456.789, 2, '.', ','); * result: 123,456.79 **/   添加一个英文的排序后缀Number.prototype.toOrdinal = function() { var n = this % 100; var suffix = ['th', 'st', 'nd', 'rd', 'th']; var ord = n < 21 ? (n < 4 ? suffix[n] : suffix[0]) : (n % 10 > 4 ? suffix[0] : suffix[n % 10]); return this + ord; } /* * Usage: * var myNumOld = 23 * var myNumNew = myNumOld.toOrdinal() * Result: 23rd */  除去非数字的字符function stripNonNumeric( str ) { str += ''; var rgx = /^d|.|-$/; var out = ''; for( var i = 0; i < str.length; i++ ) { if( rgx.test( str.charAt(i) ) ){ if( !( ( str.charAt(i) == '.' && out.indexOf( '.' ) != -1 ) || ( str.charAt(i) == '-' && out.length != 0 ) ) ){ out += str.charAt(i); } } } return out; } /* * Usage: stripNonNumeric('123et45dhs6.789'); * Result: 123456.789 */ 转自:http://www.open-open.com/bbs/view/1320971298093                                             

路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

易介集团旗下品牌 - 域名城| 国域| 中付通| 中介通| 中华知识产权网| 商标城| DoName| 域名论坛

电信与信息服务业务经营许可证 京ICP证090790号  京ICP备10003495号  电信业务审批[2010]字第598号函  京公网安备110108903585号

Archiver|手机版|小黑屋|侵权投诉|Club.domain.cn 中国域名论坛 论坛管理员邮箱:club@domain.cn

Powered by Discuz!X3.2GMT+8, 2024-5-4 12:38 © 2001-2024 Comsenz Inc.

返回顶部