龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > Javascript编程 >

自定义JavaScript数字格式化函数

时间:2012-12-29 08:41来源:未知 作者:admin 点击:
分享到:
我们写的数字格式化函数是javascript本身缺失函数,也就是说js不没有些功能函数,用户自己写了,下面有需要的朋友可参考一下。 1. 四舍五入 下面两个函数都能对浮点数进行四舍五入,
我们写的数字格式化函数是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


精彩图集

赞助商链接