1. 程式人生 > >金額大寫轉換函數

金額大寫轉換函數

source num form 小寫 大寫 sum var else val


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;
}

金額大寫轉換函數