js金额格式化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
/*
* 参数说明:
* number:要格式化的数字
* flag : 货币符号
* decimals:保留几位小数
* dec_point:小数点符号
* thousands_sep:千分位符号
* */
formatMoney: function(number,flag,decimals,dec_point,thousands_sep) {
if(!number) {
if(number == 0) {
if(flag) {
return flag + ' ' + 0;
} else {
return 0;
}
} else {
if(flag) {
return flag + ' ' + 0;
} else {
return 0;
}
}
} else {
if(decimals) {
decimals = decimals > 0 && decimals <= 20 ? decimals : 2;
} else {
decimals = 2;
}

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.ceil(n * k) / k;
};

s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
var re = /(-?\d+)(\d{3})/;
while (re.test(s[0])) {
s[0] = s[0].replace(re, "$1" + sep + "$2");
}

if ((s[1] || '').length < prec) {
s[1] = s[1] || '';
s[1] += new Array(prec - s[1].length + 1).join('0');
}

var returnStr = s.join(dec);
if(flag) {
returnStr = flag + " " + returnStr;
}
return returnStr;
}
}