金額大寫轉換函式
阿新 • • 發佈:2019-01-03
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; }