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>

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/8731.html

(0)
上一篇 2021年7月18日
下一篇 2021年7月18日

相关推荐

发表回复

登录后才能评论