把数字转换为中文大写数字

<html>
<head>
<title>转换数字大小写</title>
<meta charset="UTF-8">
<script>
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("空输入");
				 return "";
			}
			if(currencyDigits.match(/[^,.d]/) != null){
				 alert("输入字符串中的无效字符!");
				 return;
			}
			if((currencyDigits).match(/^((d{1,3}(,d{3})*(.((d{3},)*d{1,3}))?)|(d+(.d+)?))$/) == null){
				 alert("非法数字位数格式!");
				 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("太大的数字无法转换!");
			   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)] + decimal[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 type="text" size=20  id="input"/>
<input type="button" id="btn" value="Convert" />
<input type="text" size=60 id="output"/>

<script src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-3.3.1.min.js"></script>
<script>
$('#btn').on('click',function (){

var s=convertCurrency($('#input').val());
//alert(s);
$('#output').val(s);

})
</script>

</body>
</html>

  

原文地址:https://www.cnblogs.com/max-hou/p/9548942.html