十进制四舍五入
这两段代码帮助你做到四舍五入,对于你显示价格或者订单比较有用:
代码1:
01 | function CurrencyFormatted(amount) { |
02 | var i = parseFloat(amount); |
03 | if (isNaN(i)) { i = 0.00; } |
04 | var minus = '' ; |
05 | if (i < 0) { minus = '-' ; } |
06 | i = Math.abs(i); |
07 | i = parseInt((i + .005) * 100); |
08 | i = i / 100; |
09 | s = new String(i); |
10 | if (s.indexOf( '.' ) < 0) { s += '.00' ; } |
11 | if (s.indexOf( '.' ) == (s.length - 2)) { s += '0' ; } |
12 | s = minus + s; |
13 | return s; |
14 | } |
15 | |
16 | /** |
17 | * Usage: CurrencyFormatted(12345.678); |
18 | * result: 12345.68 |
19 | **/ |
01 | function format_number(pnumber,decimals){ |
02 | if (isNaN(pnumber)) { return 0}; |
03 | if (pnumber== '' ) { return 0}; |
04 | |
05 | var snum = new String(pnumber); |
06 | var sec = snum.split( '.' ); |
07 | var whole = parseFloat(sec[0]); |
08 | var result = '' ; |
09 | |
10 | if (sec.length > 1){ |
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( '.' ); |
15 | if (dot == -1){ |
16 | dec += '.' ; |
17 | dot = dec.indexOf( '.' ); |
18 | } |
19 | while (dec.length <= dot + decimals) { dec += '0' ; } |
20 | result = dec; |
21 | } else { |
22 | var dot; |
23 | var dec = new String(whole); |
24 | dec += '.' ; |
25 | dot = dec.indexOf( '.' ); |
26 | while (dec.length <= dot + decimals) { dec += '0' ; } |
27 | result = dec; |
28 | } |
29 | return result; |
30 | } |
31 | |
32 | /** |
33 | * Usage: format_number(12345.678, 2); |
34 | * result: 12345.68 |
35 | **/ |
添加逗号
这俩段代码帮助你添加逗号到每三位数字中,这让大的数字比较容易查看。
01 | function CommaFormatted(amount) { |
02 | var delimiter = "," ; // replace comma if desired |
03 | amount = new String(amount); |
04 | var a = amount.split( '.' ,2) |
05 | var d = a[1]; |
06 | var i = parseInt(a[0]); |
07 | if (isNaN(i)) { return '' ; } |
08 | var minus = '' ; |
09 | if (i < 0) { minus = '-' ; } |
10 | i = Math.abs(i); |
11 | var n = new String(i); |
12 | var a = []; |
13 | while (n.length > 3) |
14 | { |
15 | var nn = n.substr(n.length-3); |
16 | a.unshift(nn); |
17 | n = n.substr(0,n.length-3); |
18 | } |
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; |
24 | return amount; |
25 | } |
26 | |
27 | /** |
28 | * Usage: CommaFormatted(12345678); |
29 | * result: 12,345,678 |
30 | **/ |
01 | function addCommas(nStr) { |
02 | nStr += '' ; |
03 | var x = nStr.split( '.' ); |
04 | var x1 = x[0]; |
05 | var x2 = x.length >; 1 ? '.' + x[1] : '' ; |
06 | var rgx = /(d+)(d{3})/; |
07 | |
08 | while (rgx.test(x1)) { |
09 | x1 = x1.replace(rgx, '$1' + ',' + '$2' ); |
10 | } |
11 | |
12 | return x1 + x2; |
13 | } |
14 | |
15 | /** |
16 | * Usage: addCommas(12345678); |
17 | * result: 12,345,678 |
18 | **/ |
数字格式化,来自PHP
这段javascript代码功能设计来自PHP的nubmer_format功能。能够四舍五入并且加入逗号分隔。而且可以自定义10进制分隔。
01 | function number_format (number, decimals, dec_point, thousands_sep) { |
02 | |
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, |
08 | s = '' , |
09 | toFixedFix = function (n, prec) { |
10 | var k = Math.pow(10, prec); |
11 | return '' + Math.round(n * k) / k; |
12 | }; |
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); |
17 | } |
18 | if ((s[1] || '' ).length < prec) { |
19 | s[1] = s[1] || '' ; |
20 | s[1] += new Array(prec - s[1].length + 1).join( '0' ); |
21 | } |
22 | return s.join(dec); |
23 | } |
24 | |
25 | /** |
26 | * Usage: number_format(123456.789, 2, '.', ','); |
27 | * result: 123,456.79 |
28 | **/ |
添加一个英文的排序后缀
01
Number.prototype.toOrdinal =
function
() {
02
var
n =
this
% 100;
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]);
05
return
this
+ ord;
06
}
07
08
/*
09
* Usage:
10
* var myNumOld = 23
11
* var myNumNew = myNumOld.toOrdinal()
12
* Result: 23rd
13
*/
01 | Number.prototype.toOrdinal = function () { |
02 | var n = this % 100; |
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]); |
05 | return this + ord; |
06 | } |
07 | |
08 | /* |
09 | * Usage: |
10 | * var myNumOld = 23 |
11 | * var myNumNew = myNumOld.toOrdinal() |
12 | * Result: 23rd |
13 | */ |
除去非数字的字符
01 | function stripNonNumeric( str ) |
02 | { |
03 | str += '' ; |
04 | var rgx = /^d|.|-$/; |
05 | var out = '' ; |
06 | for ( var i = 0; i < str.length; i++ ) |
07 | { |
08 | if ( rgx.test( str.charAt(i) ) ){ |
09 | if ( !( ( str.charAt(i) == '.' && out.indexOf( '.' ) != -1 ) || |
10 | ( str.charAt(i) == '-' && out.length != 0 ) ) ){ |
11 | out += str.charAt(i); |
12 | } |
13 | } |
14 | } |
15 | return out; |
16 | } |
17 | |
18 | /* |
19 | * Usage: stripNonNumeric('123et45dhs6.789'); |
20 | * Result: 123456.789 |
21 | */ |