JavaScript金额大写转换函数详解编程语言

function transform(tranvalue) { 
    try { 
        var i = 1; 
        var dw2 = new Array("", "万", "亿"); //大单位 
        var dw1 = new Array("拾", "佰", "仟"); //小单位 
        var dw = new Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"); //整数部分用 
        //以下是小写转换成大写显示在合计大写的文本框中      
        //分离整数与小数 
        var source = splits(tranvalue); 
        var num = source[0]; 
        var dig = source[1]; 
        //转换整数部分 
        var k1 = 0; //计小单位 
        var k2 = 0; //计大单位 
        var sum = 0; 
        var str = ""; 
        var len = source[0].length; //整数的长度 
        for (i = 1; i <= len; i++) { 
              var n = source[0].charAt(len - i); //取得某个位数上的数字 
              var bn = 0; 
              if (len - i - 1 >= 0) { 
                bn = source[0].charAt(len - i - 1); //取得某个位数前一位上的数字 
              } 
              sum = sum + Number(n); 
              if (sum != 0) { 
                str = dw[Number(n)].concat(str); //取得该数字对应的大写数字,并插入到str字符串的前面 
                if (n == '0') sum = 0; 
              } 
              if (len - i - 1 >= 0) { //在数字范围内 
                if (k1 != 3) { //加小单位 
                      if (bn != 0) { 
                        str = dw1[k1].concat(str); 
                      } 
                      k1++; 
                } else { //不加小单位,加大单位 
                      k1 = 0; 
                      var temp = str.charAt(0); 
                      if (temp == "万" || temp == "亿") //若大单位前没有数字则舍去大单位 
                      str = str.substr(1, str.length - 1); 
                      str = dw2[k2].concat(str); 
                      sum = 0; 
                } 
              } 
              if (k1 == 3){ //小单位到千则大单位进一 
                k2++; 
              } 
        } 
        //转换小数部分 
        var strdig = ""; 
        if (dig != "") { 
              var n = dig.charAt(0); 
              if (n != 0) { 
                strdig += dw[Number(n)] + "角"; //加数字 
              } 
              var n = dig.charAt(1); 
              if (n != 0) { 
                strdig += dw[Number(n)] + "分"; //加数字 
              } 
        } 
        str += "元" + strdig; 
    } catch(e) { 
        return "0元"; 
    } 
    return str; 
} 
//拆分整数与小数 
function splits(tranvalue) { 
    var value = new Array('', ''); 
    temp = tranvalue.split("."); 
    for (var i = 0; i < temp.length; i++) { 
        value = temp; 
    } 
    return value; 
}

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/8847.html

(0)
上一篇 2021年7月18日 22:22
下一篇 2021年7月18日 22:22

相关推荐

发表回复

登录后才能评论