?
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
**/
添加逗号
这俩段代码帮助你添加逗号到每三位数字中,这让大的数字比较容易查看。
代码1:?
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
*/?
希望对大家有帮助!
(转载请注明出处:[url=http://www.live588.org]淘金盈[/url] [url=http://www.tswa.org]博彩通[/url] ?[url=http://www.nsdm.org]澳门博彩[/url] ?[url=http://www.lixx.org]博彩网[/url][url=http://www.uvip.org]e世博[/url][url=http://www.10086money.com]时尚资讯[/url][url=http://262002954-qq-com.iteye.com]flex[/url][url=http://flexflex.iteye.com]flex[/url])
?