A-A+
	自定义JavaScript数字格式化函数
我们写的数字格式化函数是javascript本身缺失函数,也就是说js不没有些功能函数,用户自己写了,下面有需要的朋友可参考一下。
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;
 - }
 - 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;
 - }
 
2.给数字添加逗号
每三位数字添加一个逗号,方便阅读,每三位数字添加一个逗号,方便阅读,代码如下:
- 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
 - **/
 - 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
 - **/
 
3. 类似PHP的 number_format 功能
这个函数可以添加分隔逗号或者进行四舍五入,这个函数可以添加分隔逗号或者进行四舍五入,代码如下:
- 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
 - **/
 
4.添加序数词
给数字添加"st, nd, rd, th"等序数词,给数字添加"st, nd, rd, th"等序数词,代码如下:
- 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
 - */
 
总结,四舍五入函数好像js自带了函数,貌似四舍五入用自带的toFixed就可以实现了,代码如下:
(2.83).toFixed(0) ==> 3
(2.6666).toFixed(2) ==> 2.67