数字金额(字符串)转换汉字数字金额

 1 var convertCurrent = function(currencyDigits){
 2     var MAXIMUM_NUMBER = 99999999999.99;    //设置最大值
 3 
 4     var CN_ZERO = "零";
 5     var CN_ONE = "壹";
 6     var CN_TWO = "贰";
 7     var CN_THREE = "叁";
 8     var CN_FOUR = "肆";
 9     var CN_FIVE = "伍";
10     var CN_SIX = "陆";
11     var CN_SEVEN = "柒";
12     var CN_EIGHT = "捌";
13     var CN_NINE = "玖";
14     var CN_TEN = "拾";
15     var CN_HUNDRED = "佰";
16     var CN_THOUSAND = "仟";
17     var CN_TEN_THOUSAND = "万";
18     var CN_HUNDRED_MILLION = "亿";
19     var CN_SYMBOL = "人民币";
20     var CN_DOLLAR = "元";
21     var CN_TEN_CENT = "角";
22     var CN_CENT = "分";
23     var CN_INTEGER = "整";
24 
25     var integral;    //Represent integral part of digit number
26     var decimal;    //Represent decimal part of digit number
27     var outputCharacters;    //The output result
28     var parts;
29     var digits, radices, bigRadices, decimals;
30     var zeroCount;
31     var i, p, d;
32     var quotient, modulus;
33 
34     currencyDigits = currencyDigits.toString();
35     if(currencyDigits == ""){
36         return "请输入金额!";
37     }
38     if(currencyDigits.match(/[^,.\d]/) != null){
39         return "请输入有效数字";
40     }
41     if(currencyDigits.match(/^((\d{1,3}(,\d{3})*(.((\d{3},)*\d{1,3}))?)|(\d+(.\d+)?))$/) == null){
42         return "数字格式错误";
43     }
44     currencyDigits = currencyDigits.replace(/,/g, "");    //Remove comma delimiters
45     currencyDigits = currencyDigits.replace(/^0+/, "");    //Trim zeros at the beginning
46     if(Number(currencyDigits) > MAXIMUM_NUMBER){
47         return "您输入的数字太大了";
48     }
49     parts = currencyDigits.split(".");
50     if(parts.length>1){
51         integral = parts[0];
52         decimal = parts[1];
53         decimal = decimal.substr(0,2);    //限制两位有效数字
54     }else{
55         integral = parts[0];
56         decimal = "";
57     }
58     digits = new Array(CN_ZERO, CN_ONE, CN_TWO, CN_THREE, CN_FOUR, CN_FIVE, CN_SIX, CN_SEVEN, CN_EIGHT, CN_NINE);
59     radices = new Array("", CN_TEN, CN_HUNDRED, CN_THOUSAND);
60     bigRadices = new Array("", CN_TEN_THOUSAND, CN_HUNDRED_MILLION);
61     decimals = new Array(CN_TEN_CENT, CN_CENT);
62     outputCharacters = "";
63     if(Number(integral) > 0){
64         zeroCount = 0;
65         for(i=0;i<integral.length;i++){
66             p = integral.length-i-1;
67             d = integral.substr(i,1);
68             quotient = p / 4;
69             modulus = p % 4;
70             if(d == "0"){
71                 zeroCount++;
72             }else{
73                 if(zeroCount>0){
74                     outputCharacters += digits[0];
75                 }
76                 zeroCount = 0;
77                 outputCharacters += digits[Number(d)] + radices[modulus];
78             }
79             if(modulus == 0 && zeroCount < 4){
80                 outputCharacters += bigRadices[quotient];
81             }
82         }
83         outputCharacters += CN_DOLLAR;
84     }
85     if(decimal != ""){
86         for(i=0;i<decimal.length;i++){
87             d = decimal.substr(i,1);
88             outputCharacters += digits[Number(d)] + decimals[i];
89         }
90     }
91     if(outputCharacters == ""){
92         outputCharacters = CN_ZERO + CN_DOLLAR;
93     }
94     if(decimal == ""){
95         outputCharacters += CN_INTEGER;
96     }
97     outputCharacters = outputCharacters;
98     return outputCharacters;
99 }

 

上一篇:H3C IRF堆叠(虚拟化)配置


下一篇:28.从键盘输入10个正负相间的整数,输出个位数是奇数、十位数是偶数的所有数。