JQuery 金额转大写 - ZKUI

Nothing is impossible

JQuery 金额转大写

最近一个需求中:订单单据总计需要显示大写格式
壹万捌仟肆佰零柒元叁角柒分
方法一:

function upperOne(a){
      var totalPrice = a;
      //如果输入的不是数字,则将其设置为空
      totalPrice = totalPrice.replace(/[^\d\.]/g,'').replace(/^0/,'');
      var Num = totalPrice;
      if(Num=="" || Num==0.00) {//输入框删减为空时
        return "零元整";
      }
      part = String(Num).split(".");
      newchar = "";
      for(i=part[0].length-1;i>=0;i--){
        if(part[0].length > 10){
          alert("位数过大,无法计算");//前面如果有验证位数的,此处判断可去掉
          return false;
        }
        tmpnewchar = ""
        perchar = part[0].charAt(i);
        switch(perchar){
          case "0": tmpnewchar="零" + tmpnewchar ;break;
          case "1": tmpnewchar="壹" + tmpnewchar ;break;
          case "2": tmpnewchar="贰" + tmpnewchar ;break;
          case "3": tmpnewchar="叁" + tmpnewchar ;break;
          case "4": tmpnewchar="肆" + tmpnewchar ;break;
          case "5": tmpnewchar="伍" + tmpnewchar ;break;
          case "6": tmpnewchar="陆" + tmpnewchar ;break;
          case "7": tmpnewchar="柒" + tmpnewchar ;break;
          case "8": tmpnewchar="捌" + tmpnewchar ;break;
          case "9": tmpnewchar="玖" + tmpnewchar ;break;
        }
        switch(part[0].length-i-1){
          case 0: tmpnewchar = tmpnewchar +"元" ;break;
          case 1: if(perchar!=0)tmpnewchar= tmpnewchar +"拾" ;break;
          case 2: if(perchar!=0)tmpnewchar= tmpnewchar +"佰" ;break;
          case 3: if(perchar!=0)tmpnewchar= tmpnewchar +"仟" ;break;
          case 4: tmpnewchar= tmpnewchar +"万" ;break;
          case 5: if(perchar!=0)tmpnewchar= tmpnewchar +"拾" ;break;
          case 6: if(perchar!=0)tmpnewchar= tmpnewchar +"佰" ;break;
          case 7: if(perchar!=0)tmpnewchar= tmpnewchar +"仟" ;break;
          case 8: tmpnewchar= tmpnewchar +"亿" ;break;
          case 9: tmpnewchar= tmpnewchar +"拾" ;break;
        }
        newchar = tmpnewchar + newchar;
      }
      if(Num.indexOf(".")!=-1){
        if(part[1].length > 2) {
          part[1] = part[1].substr(0,2)
        }
        for(i=0;i<part[1].length;i++){
          tmpnewchar = ""
          perchar = part[1].charAt(i)
          switch(perchar){
            case "0": tmpnewchar="零" + tmpnewchar ;break;
            case "1": tmpnewchar="壹" + tmpnewchar ;break;
            case "2": tmpnewchar="贰" + tmpnewchar ;break;
            case "3": tmpnewchar="叁" + tmpnewchar ;break;
            case "4": tmpnewchar="肆" + tmpnewchar ;break;
            case "5": tmpnewchar="伍" + tmpnewchar ;break;
            case "6": tmpnewchar="陆" + tmpnewchar ;break;
            case "7": tmpnewchar="柒" + tmpnewchar ;break;
            case "8": tmpnewchar="捌" + tmpnewchar ;break;
            case "9": tmpnewchar="玖" + tmpnewchar ;break;
          }
          if(i==0)tmpnewchar =tmpnewchar + "角";
          if(i==1)tmpnewchar = tmpnewchar + "分";
          newchar = newchar + tmpnewchar;
        }
      }
      while(newchar.search("零元") != -1){
        newchar = newchar.replace("零零", "零");
        newchar = newchar.replace("零亿", "亿");
        newchar = newchar.replace("亿万", "亿");
        newchar = newchar.replace("零万", "万");
        newchar = newchar.replace("零元", "元");
        newchar = newchar.replace("零角", "");
        newchar = newchar.replace("零分", "");
        newchar = newchar.replace("零角零分", "整");
      }
      if(newchar.charAt(newchar.length-1) == "元" || newchar.charAt(newchar.length-1) == "角"){
        newchar = newchar+"整";
      }
      newchar = newchar.replace("零角零分", "整");
      return newchar;
    }

方法二:
原文链接:https://blog.csdn.net/hlbt0112/article/details/72844255

function upperTwo(a){
    var money = a;
    if(Num=="" || Num==0.00) {//输入框删减为空时
        return "零元整";
      }
    var fraction = ['角','分'];
    var digit = ['零','壹','贰','叁','肆','伍','陆','柒','捌','玖'];
    var unit = [['元','万','亿'],['','拾','佰','仟']];
    var head = money < 0?'欠':'';
    money = Math.abs(money);
    var s = '';
    for (var i = 0; i < fraction.length; i++) {
      s += (digit[Math.floor(money * 10 * Math.pow(10, i)) % 10] + fraction[i]).replace(/零./, '');
    }
    s = s || '整';
    money = Math.floor(money);
    for (var i = 0; i < unit[0].length && money > 0; i++) {
      var p = '';
      for (var j = 0; j < unit[1].length && money > 0; j++) {
        p = digit[money % 10] + unit[1][j] + p;
        money = Math.floor(money / 10);
      }
      s = p.replace(/(零.)*零$/, '').replace(/^$/, '零') + unit[0][i] + s;
    }
    var sum= head + s.replace(/(零.)*零元/,'元').replace(/(零.)+/g, '零').replace(/^整$/, '零元整');
    return sum;
}
分享