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
function outputmoney(number) {
number = number.replace(/\,/g, "");
if (isNaN(number) || number == "") return "";
number = Math.round(number * 100) / 100;
if (number < 0) {
return '-' + outputdollars(Math.floor(Math.abs(number) - 0) + '') + outputcents(Math.abs(number) - 0);
} else {
return outputdollars(Math.floor(number - 0) + '') + outputcents(number - 0);
}
}
function outputdollars(number) {
if (number.length <= 3) {
return (number == '' ? '0' : number);
} else {
var mod = number.length % 3;
var output = (mod == 0 ? '' : (number.substring(0, mod)));
for (i = 0; i < Math.floor(number.length / 3); i++) {
if ((mod == 0) && (i == 0)) {
output += number.substring(mod + 3 * i, mod + 3 * i + 3);
} else {
output += ',' + number.substring(mod + 3 * i, mod + 3 * i + 3);
}
}
return (output);
}
}

function outputcents(amount) {
amount = Math.round(((amount) - Math.floor(amount)) * 100);
return (amount < 10 ? '.0' + amount : '.' + amount);
}
var number = '10038798.39';
> 如果是number类型,可通过+''或者toString()来转换为string类型,因为要用到一些string的方法。
number = outputmoney(number);
console.log(number);
10,038,798.39

方法二

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
function formatNum(str) {
var newStr = "";
var count = 0;

if (str.indexOf(".") == -1) {
for (var i = str.length - 1; i >= 0; i--) {
if (count % 3 == 0 && count != 0) {
newStr = str.charAt(i) + "," + newStr;
} else {
newStr = str.charAt(i) + newStr;
}
count++;
}
str = newStr + ".00"; //自动补小数点后两位
console.log(str)
} else {
for (var i = str.indexOf(".") - 1; i >= 0; i--) {
if (count % 3 == 0 && count != 0) {
newStr = str.charAt(i) + "," + newStr;
} else {
newStr = str.charAt(i) + newStr; //逐个字符相接起来
}
count++;
}
str = newStr + (str + "00").substr((str + "00").indexOf("."), 3);
}
return str;
}
var number = '10038798.39';
> 如果是number类型,可通过+''或者toString()来转换为string类型,因为要用到一些string的方法。
number = formatNum(number);
console.log(number);
10,038,798.39