1 function NumToBig(num)
2 {
3 if(isNaN(num))
4 {
5 alert('请检查小写金额是否正确!');
6 return;
7 }
8 else
9 {
10 //保留两位有效数字
11 num = Math.round(num*Math.pow(10,2))/Math.pow(10,2);
12 }
13 var NumStr = String(num);
14 var NumChar = '零壹贰叁肆伍陆柒捌玖';
15 var UnitChar1 = ' 拾佰仟 拾佰仟 拾佰仟 拾佰仟';
16 var UnitChar2 = ' 万亿兆';
17 var Len;
18 var LeftLen,LeftStr;
19 var RightLen,RightStr;
20 var BigStr = '';
21 Len = NumStr.length;
22 //根据小数点分割字符串
23 if(NumStr.indexOf('.')==-1)//没有小数
24 {
25 LeftStr = NumStr;
26 LeftLen = Len;
27 RightStr = '';
28 RightLen = 0;
29 }
30 else
31 {
32 LeftStr = (NumStr.split('.'))[0];
33 LeftLen = LeftStr.length;
34 RightStr = (NumStr.split('.'))[1];
35 RightLen = RightStr.length;
36 }
37 //转换整数部分
38 for(var i=0;i<LeftLen;i++)
39 {
40 //按位取小写数字
41 var LeftTempNum = parseInt(LeftStr.substring(i,i+1));
42 //转换成大写
43 var LeftTempStr = NumChar.substring(LeftTempNum,LeftTempNum+1);
44 //数字位为零且不是一位数
45 if(TempStr=='零' && LeftLen!=1)
46 {
47 //下一位数字为零或者为万(个)位
48 if(LeftStr.substring(i+1,i+2)=='0' || (LeftLen-i)%4==1)
49 {
50 LeftTempStr = '';
51 }
52 }
53 else
54 {
55 //加上读的单位,拾佰仟之类的
56 LeftTempStr += UnitChar1.substring(LeftLen-i-1,LeftLen-i).replace(' ','');
57 }
58 //万位或个位
59 if((LeftLen-i)%4==1)
60 {
61 LeftTempStr += UnitChar2.substring(parseInt((LeftLen-i)/4),parseInt((LeftLen-i)/4)+1);
62 if(i>2)
63 {
64 if(LeftStr.substring(i-3,i+1)=='0000')
65 {
66 LeftTempStr = TempStr.substring(0,LeftTempStr.length-1);
67 }
68 }
69 }
70 BigStr += LeftTempStr.replace(' ','');
71 }
72 //处理小数部分
73 if(RightLen==0)
74 {
75 BigStr += '元整';
76 }
77 else
78 {
79 BigStr += '元';
80 for(var i=0;i<RightLen;i++)
81 {
82 //按位取小写数字
83 var RightTempNum = parseInt(RightStr.substring(i,i+1));
84 //转换成大写
85 var RightTempStr = NumChar.substring(RightTempNum,RightTempNum+1);
86 if (i==0)
87 {
88 RightTempStr+="角";
89 }
90 if (i==1)
91 {
92 RightTempStr+="分";
93 }
94 BigStr += RightTempStr;
95 }
96 }
97 return BigStr;
98 }
2 {
3 if(isNaN(num))
4 {
5 alert('请检查小写金额是否正确!');
6 return;
7 }
8 else
9 {
10 //保留两位有效数字
11 num = Math.round(num*Math.pow(10,2))/Math.pow(10,2);
12 }
13 var NumStr = String(num);
14 var NumChar = '零壹贰叁肆伍陆柒捌玖';
15 var UnitChar1 = ' 拾佰仟 拾佰仟 拾佰仟 拾佰仟';
16 var UnitChar2 = ' 万亿兆';
17 var Len;
18 var LeftLen,LeftStr;
19 var RightLen,RightStr;
20 var BigStr = '';
21 Len = NumStr.length;
22 //根据小数点分割字符串
23 if(NumStr.indexOf('.')==-1)//没有小数
24 {
25 LeftStr = NumStr;
26 LeftLen = Len;
27 RightStr = '';
28 RightLen = 0;
29 }
30 else
31 {
32 LeftStr = (NumStr.split('.'))[0];
33 LeftLen = LeftStr.length;
34 RightStr = (NumStr.split('.'))[1];
35 RightLen = RightStr.length;
36 }
37 //转换整数部分
38 for(var i=0;i<LeftLen;i++)
39 {
40 //按位取小写数字
41 var LeftTempNum = parseInt(LeftStr.substring(i,i+1));
42 //转换成大写
43 var LeftTempStr = NumChar.substring(LeftTempNum,LeftTempNum+1);
44 //数字位为零且不是一位数
45 if(TempStr=='零' && LeftLen!=1)
46 {
47 //下一位数字为零或者为万(个)位
48 if(LeftStr.substring(i+1,i+2)=='0' || (LeftLen-i)%4==1)
49 {
50 LeftTempStr = '';
51 }
52 }
53 else
54 {
55 //加上读的单位,拾佰仟之类的
56 LeftTempStr += UnitChar1.substring(LeftLen-i-1,LeftLen-i).replace(' ','');
57 }
58 //万位或个位
59 if((LeftLen-i)%4==1)
60 {
61 LeftTempStr += UnitChar2.substring(parseInt((LeftLen-i)/4),parseInt((LeftLen-i)/4)+1);
62 if(i>2)
63 {
64 if(LeftStr.substring(i-3,i+1)=='0000')
65 {
66 LeftTempStr = TempStr.substring(0,LeftTempStr.length-1);
67 }
68 }
69 }
70 BigStr += LeftTempStr.replace(' ','');
71 }
72 //处理小数部分
73 if(RightLen==0)
74 {
75 BigStr += '元整';
76 }
77 else
78 {
79 BigStr += '元';
80 for(var i=0;i<RightLen;i++)
81 {
82 //按位取小写数字
83 var RightTempNum = parseInt(RightStr.substring(i,i+1));
84 //转换成大写
85 var RightTempStr = NumChar.substring(RightTempNum,RightTempNum+1);
86 if (i==0)
87 {
88 RightTempStr+="角";
89 }
90 if (i==1)
91 {
92 RightTempStr+="分";
93 }
94 BigStr += RightTempStr;
95 }
96 }
97 return BigStr;
98 }