| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
m45y
10年前发布

JS实现将人民币数字转换成大写形式

用JavaScript编写了一功能函数,完成如下功能:

1、对一给定字符串,如:1234.55,转换成正确的中文货币描述:如:人民币壹仟贰佰叁拾四元五角五分

2、输入的字符串形式可以是以下几种:带分隔符的,如:123,456,789.00;不带分隔符的,如:123456789

3、输出的中文货币描述要符合规范,如:0.3----人民币三角;0.33----人民币三角三分;1----人民币壹元整

100----人民币壹佰元整;1001----人民币壹仟零壹元整;10000001----人民币壹仟万零壹元整;1001001---- 人民币壹仟零壹万零壹元整,等

4、最大转换能到百亿

具体的代码如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">  <html>   <head>    <title></title>    <script language="jscript">  function convertCurrency(currencyDigits) {  // Constants:   var MAXIMUM_NUMBER = 99999999999.99;   // Predefine the radix characters and currency symbols for output:   var CN_ZERO = "零";   var CN_ONE = "壹";   var CN_TWO = "贰";   var CN_THREE = "叁";   var CN_FOUR = "肆";   var CN_FIVE = "伍";   var CN_SIX = "陆";   var CN_SEVEN = "柒";   var CN_EIGHT = "捌";   var CN_NINE = "玖";   var CN_TEN = "拾";   var CN_HUNDRED = "佰";   var CN_THOUSAND = "仟";   var CN_TEN_THOUSAND = "万";   var CN_HUNDRED_MILLION = "亿";   var CN_SYMBOL = "人民币";   var CN_DOLLAR = "元";   var CN_TEN_CENT = "角";   var CN_CENT = "分";   var CN_INTEGER = "整";    // Variables:   var integral; // Represent integral part of digit number.   var decimal; // Represent decimal part of digit number.   var outputCharacters; // The output result.   var parts;   var digits, radices, bigRadices, decimals;   var zeroCount;   var i, p, d;   var quotient, modulus;    // Validate input string:   currencyDigits = currencyDigits.toString();   if (currencyDigits == "") {    alert("Empty input!");    return "";   }   if (currencyDigits.match(/[^,.d]/) != null) {    alert("Invalid characters in the input string!");    return "";   }   if ((currencyDigits).match(/^((d{1,3}(,d{3})*(.((d{3},)*d{1,3}))?)|(d+(.d+)?))$/) == null) {    alert("Illegal format of digit number!");    return "";   }    // Normalize the format of input digits:   currencyDigits = currencyDigits.replace(/,/g, ""); // Remove comma delimiters.   currencyDigits = currencyDigits.replace(/^0+/, ""); // Trim zeros at the beginning.   // Assert the number is not greater than the maximum number.   if (Number(currencyDigits) > MAXIMUM_NUMBER) {    alert("Too large a number to convert!");    return "";   }    // Process the coversion from currency digits to characters:   // Separate integral and decimal parts before processing coversion:   parts = currencyDigits.split(".");   if (parts.length > 1) {    integral = parts[0];    decimal = parts[1];    // Cut down redundant decimal digits that are after the second.    decimal = decimal.substr(0, 2);   }   else {    integral = parts[0];    decimal = "";   }   // Prepare the characters corresponding to the digits:   digits = new Array(CN_ZERO, CN_ONE, CN_TWO, CN_THREE, CN_FOUR, CN_FIVE, CN_SIX, CN_SEVEN, CN_EIGHT, CN_NINE);   radices = new Array("", CN_TEN, CN_HUNDRED, CN_THOUSAND);   bigRadices = new Array("", CN_TEN_THOUSAND, CN_HUNDRED_MILLION);   decimals = new Array(CN_TEN_CENT, CN_CENT);   // Start processing:   outputCharacters = "";   // Process integral part if it is larger than 0:   if (Number(integral) > 0) {    zeroCount = 0;    for (i = 0; i < integral.length; i++) {     p = integral.length - i - 1;     d = integral.substr(i, 1);     quotient = p / 4;     modulus = p % 4;     if (d == "0") {      zeroCount++;     }     else {      if (zeroCount > 0)      {       outputCharacters += digits[0];      }      zeroCount = 0;      outputCharacters += digits[Number(d)] + radices[modulus];     }     if (modulus == 0 && zeroCount < 4) {      outputCharacters += bigRadices[quotient];     }    }    outputCharacters += CN_DOLLAR;   }   // Process decimal part if there is:   if (decimal != "") {    for (i = 0; i < decimal.length; i++) {     d = decimal.substr(i, 1);     if (d != "0") {      outputCharacters += digits[Number(d)] + decimals[i];     }    }   }   // Confirm and return the final output string:   if (outputCharacters == "") {    outputCharacters = CN_ZERO + CN_DOLLAR;   }   if (decimal == "") {    outputCharacters += CN_INTEGER;   }   outputCharacters = CN_SYMBOL + outputCharacters;   return outputCharacters;  }    </script>   </head>   <body>    <INPUT id="Digits" type="text" name="Digits" size=20>    <INPUT id="Convert" type="button" value="Convert" name="Convert" onclick="Result.value = convertCurrency(Digits.value);">    <INPUT id="Result" type="text" name="Result" size=60>   </body>  </html>