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;  
    }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值