代码如下:
1 function convertCurrency(money) {
2 //汉字的数字
3 var cnNums = new Array('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖');
4 //基本单位
5 var cnIntRadice = new Array('', '拾', '佰', '仟');
6 //对应整数部分扩展单位
7 var cnIntUnits = new Array('', '万', '亿', '兆');
8 //对应小数部分单位
9 var cnDecUnits = new Array('角', '分', '毫', '厘');
10 //整数金额时后面跟的字符
11 var cnInteger = '整';
12 //整型完以后的单位
13 var cnIntLast = '元';
14 //最大处理的数字
15 var maxNum = 999999999999999.9999;
16 //金额整数部分
17 var integerNum;
18 //金额小数部分
19 var decimalNum;
20 //输出的中文金额字符串
21 var chineseStr = '';
22 //分离金额后用的数组,预定义
23 var parts;
24
25 if (money == '') { return ''; }
26
27 money = parseFloat(money);
28 if (money >= maxNum) {
29 //超出最大处理数字
30 return '';
31 }
32 if (money == 0) {
33 chineseStr = cnNums[0] + cnIntLast + cnInteger;
34 return chineseStr;
35 }
36
37 //转换为字符串
38 money = money.toString();
39 if (money.indexOf('.') == -1) {
40 integerNum = money;
41 decimalNum = '';
42 } else {
43 parts = money.split('.');
44 integerNum = parts[0];
45 decimalNum = parts[1].substr(0, 4);
46 }
47
48 //获取整型部分转换
49 if (parseInt(integerNum, 10) > 0) {
50 var zeroCount = 0;
51 var IntLen = integerNum.length;
52 for (var i = 0; i < IntLen; i++) {
53 var n = integerNum.substr(i, 1);
54 var p = IntLen - i - 1;
55 var q = p / 4;
56 var m = p % 4;
57 if (n == '0') {
58 zeroCount++;
59 } else {
60 if (zeroCount > 0) {
61 chineseStr += cnNums[0];
62 }
63 //归零
64 zeroCount = 0;
65 chineseStr += cnNums[parseInt(n)] + cnIntRadice[m];
66 }
67 if (m == 0 && zeroCount < 4) {
68 chineseStr += cnIntUnits[q];
69 }
70 }
71 chineseStr += cnIntLast;
72 }
73
74 //小数部分
75 if (decimalNum != '') {
76 var decLen = decimalNum.length;
77 for (var i = 0; i < decLen; i++) {
78 var n = decimalNum.substr(i, 1);
79 if (n != '0') {
80 chineseStr += cnNums[Number(n)] + cnDecUnits[i];
81 }
82 }
83 }
84
85 if (chineseStr == '') {
86 chineseStr += cnNums[0] + cnIntLast + cnInteger;
87 } else if (decimalNum == '') {
88 chineseStr += cnInteger;
89 }
90
91 return chineseStr;
92 }