JS 实现数字转换为大写中文金额

  1. function convertCurrency(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 = money.toString();  
      if (money.indexOf('.') == -1) {  
        integerNum = money;  
        decimalNum = '';  
      } else {  
        parts = money.split('.');  
        integerNum = parts[0];  
        decimalNum = parts[1].substr(0, 4);  
      }  
      //获取整型部分转换  
      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 == '') {  
        chineseStr += cnInteger;  
      }  
      return chineseStr;  
    }  
function CheckAlls(checked) { len = document.frmmain.elements.length; var i=0; for( i=0; i<len; i++) { if (document.frmmain.elements[i].name=='check_node_0') { if(document.frmmain.elements[i].disabled == false){ document.frmmain.elements[i].checked=(checked==true?true:false); } } } } document.onpropertychange= function() { var a= document.getElementById('field6163').value;//取小写金额的值 var numberValue=new String(Math.round(a*100)); // 数字金额 var String1 = "零壹贰叁肆伍陆柒捌玖"; // 汉字数字 var String2 = "万仟佰拾亿仟佰拾万仟佰拾元角分"; // 对应单位 var len=numberValue.length; // numberValue 的字符串长度 //alert(len); var Ch1; // 数字的汉语读法 var Ch2; // 数字位的汉字读法 var nZero=0; // 用来计算连续的零值的个数 var String3; // 指定位置的数值 { if(len>15){ alert("超出计算范围"); return fase; } if (numberValue==0){ chineseValue = "零元整"; } else { chineseValue=""; } String2 = String2.substr(String2.length-len, len); // 取出对应位数的STRING2的值 for(var i=0; i= 3 ){ Ch1 = ""; Ch2 = ""; nZero = nZero + 1; } else{ Ch1 = ""; Ch2 = String2.substr(i, 1); nZero = nZero + 1; } if( i == (len - 11) || i == (len - 3)){ // 如果该位是亿位或元位,则必须写上 Ch2 = String2.substr(i, 1); } } chineseValue =chineseValue +Ch1 + Ch2; } if ( String3 == 0 ){ // 最后一位(分)为0时,加上“整” chineseValue = chineseValue + "整"; } } //alert(chineseValue); document.getElementById('field6421').value=chineseValue; }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值