JS实现将数字金额转换为大写人民币汉字

JS实现将数字金额转换为大写人民币汉字:

<body>
	<div>
		<h4>js数字金额大写转换</h4>
		<input type="text" id="money" />
		<a href="javscript: void(0)" id="toUppercase" onclick="menoyToUppercase()">转换</a>
		<div id="jedx"></div>
	</div>
<script type="text/javascript" src="${pageContext.request.contextPath }/static/js/jquery-3.3.1.min.js"></script>
<script type="text/javascript">
	//input改变事件
	$("#money").on("change",function(){
		var money = $(this).val();
		if (!checkMoney(money)) {
			$(this).val("");
			alert("请输入正确的金额!");
			return false;
		}
	});
	//验证字符串是否是数字
	function checkMoney(money) {
		var reg = /^[0-9]+.?\d*$/;
		if (reg.test(money)) {
			return true;
		}
		return false;
	}
	
	//转换点击事件
	$("#toUppercase").on("click",function(){
		var money = $("#money").val();
		var chineseStr = menoyToUppercase(money);
		$("#jedx").html(chineseStr);
	}); 
	
	//代码如下所示:
	function menoyToUppercase(money) {
	  var cnNums = new Array('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖');	 //汉字的数字
	  var cnIntRadice = new Array('', '拾', '佰', '仟'); //基本单位
	  var cnIntUnits = new Array('', '万', '亿', '兆');  //对应整数部分扩展单位
	  var cnDecUnits = new Array('角', '分', '毫', '厘'); //对应小数部分单位
	  var cnInteger = '整';	//整数金额时后面跟的字符			
	  var cnIntLast = '元';	//整数完以后的单位
	  //最大处理的数字
	  var maxNum = 999999999999999.9999;
	  var integerNum;	 //金额整数部分
	  var decimalNum;	 //金额小数部分
	  //输出的中文金额字符串
	  var chineseStr = '';
	  var parts;		//分离金额后用的数组,预定义
	  if (money == '') { return ''; }
	  
	  money = parseFloat(money);
	  if (money >= maxNum) {
	    //超出最大处理数字
	    return '超出最大处理数字';
	  }
	  if (money == 0) {
	    chineseStr = cnNums[0] + cnIntLast + cnInteger;
	    return chineseStr;
	  }
	  
	//四舍五入保留两位小数,转换为字符串
	money = Math.round(money * 100).toString();
	integerNum = money.substr(0,money.length-2);
	decimalNum = money.substr(money.length-2);
	  
	  //获取整型部分转换
	  if (parseInt(integerNum, 10) > 0) {
	    var zeroCount = 0;
	    var IntLen = integerNum.length;
	    for (var i = 0; i < IntLen; i++) {
	      var n = integerNum.substr(i, 1);
	      var p = IntLen - i - 1;
	      var q = p / 4;
	      var m = p % 4;
	      if (n == '0') {
	        zeroCount++;
	      } else {
	        if (zeroCount > 0) {
	          chineseStr += cnNums[0];
	        }
	        //归零
	        zeroCount = 0;
	        chineseStr += cnNums[parseInt(n)] + cnIntRadice[m];
	      }
	      if (m == 0 && zeroCount < 4) {
	        chineseStr += cnIntUnits[q];
	      }
	    }
	    chineseStr += cnIntLast;
	  }
	  //小数部分
	  if (decimalNum != '') {
	    var decLen = decimalNum.length; 
	    for (var i = 0; i < decLen; i++) {
	      var n = decimalNum.substr(i, 1);
	      if (n != '0') {
	        chineseStr += cnNums[Number(n)] + cnDecUnits[i];
	      }
	    }
	  }
	  if (chineseStr == '') {
	    chineseStr += cnNums[0] + cnIntLast + cnInteger;
	  } else if (decimalNum == '' || /^0*$/.test(decimalNum)) {
	    chineseStr += cnInteger;
	  }
	  return chineseStr;
	}
</script>

</body>	

    

参考文章: https://blog.csdn.net/gang_strong/article/details/53005666

猜你喜欢

转载自blog.csdn.net/qq_42402854/article/details/82924140