Javascript没有任何内建的格式化函数,这里我们通过Google收集了5个javascript的数字格式化函数,希望对于大家的web开发能够带来方便。
十进制四舍五入
这两段代码帮助你做到四舍五入,对于你显示价格或者订单比较有用:
代码1:
01 |
function CurrencyFormatted(amount) { |
02 |
var i = parseFloat(amount); |
03 |
if (isNaN(i)) { i = 0.00; } |
05 |
if (i < 0) { minus = '-' ; } |
07 |
i = parseInt((i + .005) * 100); |
10 |
if (s.indexOf( '.' ) < 0) { s += '.00' ; } |
11 |
if (s.indexOf( '.' ) == (s.length - 2)) { s += '0' ; } |
17 |
* Usage: CurrencyFormatted(12345.678); |
代码2:
01 |
function format_number(pnumber,decimals){ |
02 |
if (isNaN(pnumber)) { return 0}; |
03 |
if (pnumber== '' ) { return 0}; |
05 |
var snum = new String(pnumber); |
06 |
var sec = snum.split( '.' ); |
07 |
var whole = parseFloat(sec[0]); |
11 |
var dec = new String(sec[1]); |
12 |
dec = String(parseFloat(sec[1])/Math.pow(10,(dec.length - decimals))); |
13 |
dec = String(whole + Math.round(parseFloat(dec))/Math.pow(10,decimals)); |
14 |
var dot = dec.indexOf( '.' ); |
17 |
dot = dec.indexOf( '.' ); |
19 |
while (dec.length <= dot + decimals) { dec += '0' ; } |
23 |
var dec = new String(whole); |
25 |
dot = dec.indexOf( '.' ); |
26 |
while (dec.length <= dot + decimals) { dec += '0' ; } |
33 |
* Usage: format_number(12345.678, 2); |
添加逗号
这俩段代码帮助你添加逗号到每三位数字中,这让大的数字比较容易查看。
01 |
function CommaFormatted(amount) { |
02 |
var delimiter = "," ; // replace comma if desired |
03 |
amount = new String(amount); |
04 |
var a = amount.split( '.' ,2) |
06 |
var i = parseInt(a[0]); |
07 |
if (isNaN(i)) { return '' ; } |
09 |
if (i < 0) { minus = '-' ; } |
11 |
var n = new String(i); |
15 |
var nn = n.substr(n.length-3); |
17 |
n = n.substr(0,n.length-3); |
19 |
if (n.length > 0) { a.unshift(n); } |
20 |
n = a.join(delimiter); |
21 |
if (d.length < 1) { amount = n; } |
22 |
else { amount = n + '.' + d; } |
23 |
amount = minus + amount; |
28 |
* Usage: CommaFormatted(12345678); |
代码2:
01 |
function addCommas(nStr) { |
03 |
var x = nStr.split( '.' ); |
05 |
var x2 = x.length >; 1 ? '.' + x[1] : '' ; |
06 |
var rgx = /(d+)(d{3})/; |
08 |
while (rgx.test(x1)) { |
09 |
x1 = x1.replace(rgx, '$1' + ',' + '$2' ); |
16 |
* Usage: addCommas(12345678); |
数字格式化,来自PHP
这段javascript代码功能设计来自PHP的nubmer_format功能。能够四舍五入并且加入逗号分隔。而且可以自定义10进制分隔。
01 |
function number_format (number, decimals, dec_point, thousands_sep) { |
03 |
number = (number + '' ).replace(/[^0-9+-Ee.]/g, '' ); |
04 |
var n = !isFinite(+number) ? 0 : +number, |
05 |
prec = !isFinite(+decimals) ? 0 : Math.abs(decimals), |
06 |
sep = ( typeof thousands_sep === 'undefined' ) ? ',' : thousands_sep, |
07 |
dec = ( typeof dec_point === 'undefined' ) ? '.' : dec_point, |
09 |
toFixedFix = function (n, prec) { |
10 |
var k = Math.pow(10, prec); |
11 |
return '' + Math.round(n * k) / k; |
13 |
// Fix for IE parseFloat(0.55).toFixed(0) = 0; |
14 |
s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split( '.' ); |
15 |
if (s[0].length > 3) { |
16 |
s[0] = s[0].replace(/B(?=(?:d{3})+(?!d))/g, sep); |
18 |
if ((s[1] || '' ).length < prec) { |
20 |
s[1] += new Array(prec - s[1].length + 1).join( '0' ); |
26 |
* Usage: number_format(123456.789, 2, '.', ','); |
添加一个英文的排序后缀
01 |
Number.prototype.toOrdinal = function () { |
03 |
var suffix = [ 'th' , 'st' , 'nd' , 'rd' , 'th' ]; |
04 |
var ord = n < 21 ? (n < 4 ? suffix[n] : suffix[0]) : (n % 10 > 4 ? suffix[0] : suffix[n % 10]); |
11 |
* var myNumNew = myNumOld.toOrdinal() |
除去非数字的字符
01 |
function stripNonNumeric( str ) |
06 |
for ( var i = 0; i < str.length; i++ ) |
08 |
if ( rgx.test( str.charAt(i) ) ){ |
09 |
if ( !( ( str.charAt(i) == '.' && out.indexOf( '.' ) != -1 ) || |
10 |
( str.charAt(i) == '-' && out.length != 0 ) ) ){ |
19 |
* Usage: stripNonNumeric('123et45dhs6.789'); |
原文来自:分享5个javascript的数字格式化函数
|