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