因為自己大學畢業以後一直從事網上銀行的開發工作,所以工作中經常遇到把金額轉化為大寫的情況。起初只有人民幣一種幣種,將金額數字翻譯成中文大寫的形式在各種票據中很常見,時至今日依然還在使用,在網路上很容易能找到翻譯的代碼。而最近在開發“貿易金融”的需求時,涉及到進口信用證的開立功能,而進口證的申請書中除 ...
因為自己大學畢業以後一直從事網上銀行的開發工作,所以工作中經常遇到把金額轉化為大寫的情況。起初只有人民幣一種幣種,將金額數字翻譯成中文大寫的形式在各種票據中很常見,時至今日依然還在使用,在網路上很容易能找到翻譯的代碼。而最近在開發“貿易金融”的需求時,涉及到進口信用證的開立功能,而進口證的申請書中除了人民幣之外,還涉及到很多種外幣供用戶選擇,比如美元、日元、英鎊等等。同時還要求把金額翻譯成英文的形式,並把選擇的幣種加在金額翻譯前面一同顯示。這就比僅僅把金額翻譯成中文大寫難了一些,因為英文的翻譯和中文不同,但弄懂了英文翻譯規則以後,就很容易實現了。
本篇主要介紹一個中英文金額大寫轉換器,這個轉換器的核心是JS代碼,也是在實際工作中用到的,這裡把JS代碼稍加改造,放到HTML頁面中。為了方便起見,我們把涉及到的HTML、JS、CSS統一放在一個HTML文件中,這樣可以用瀏覽器直接打開,當然在實際工作中最好把他們放在不同的文件。下麵對這個工具簡單介紹。
工具的整體佈局和我之前的一篇“大樂透號碼生成”的工具的佈局基本一致(詳見 http://www.cnblogs.com/Y-oung/p/7756851.html),設置了一個下拉列表(“選擇幣種”)來選擇不同的幣種,這裡僅列舉了一部分幣種。下麵是“輸入金額”項,需要在輸入框輸入金額,這裡僅允許輸入數字和小數點,控制最多輸入11位,同時小數點後最多應該保留兩位,否則會報錯。當這兩項都輸入完成以後,點擊“轉化為大寫”按鈕,即可轉化為中英文大寫金額,並且在“中文大寫”下麵顯示翻譯的中文大寫,在“英文大寫”下麵顯示翻譯的英文大寫。
頁面樣式:
如果大家在工作或學習中遇到將金額數字轉化為中文大寫或英文大寫的情況,不妨參考一下這個工具。
參考代碼:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>中英文金額大寫轉換器</title> <style type="text/css"> #table {width:800px; height:500px;margin:10px;border:2px solid #000000;box-shadow: 10px 10px 5px;border-radius:50px;} .buttonStyle {height:40px;margin:20px;font-size:20px;background-color:#6495ED;color:white;border-radius:10px;} .oneStyle {margin-left:150px;margin-top:10px;font-family:sans-serif;font-size:20px;} .oneStyle1 {margin-left:150px;margin-top:30px;font-family:sans-serif;font-size:20px;} .InputText {width:150px;height:20px;margin:10px;} span {border-radius: 50%;color: #FFFFFF;padding:3px;font-size:13px;} </style> </head> <body> <div id="table"> <div> <h1 style="text-align:center">中英文金額大寫轉換器</h1> </div> <div class="oneStyle"> 選擇幣種:<select id="currency" class="InputText" title="幣種"> <option value="">-----請選擇-----</option> <option value="CNY">人民幣</option> <option value="GBP">英鎊</option> <option value="HKD">港幣</option> <option value="USD">美元</option> <option value="CHF">瑞士法郎</option> <option value="SGD">新加坡元</option> <option value="JPY">日元</option> <option value="CAD">加拿大元</option> <option value="AUD">澳大利亞元</option> <option value="EUR">歐元</option> <option value="NZD">紐西蘭元</option> </select> </div> <div class="oneStyle"> 輸入金額:<input class="InputText" type="text" id="Amount" name="Amount" maxlength="11" title="金額" onkeyup="(this.v=function(){this.value=this.value.replace(/[^0-9|^.]+/,'');}).call(this)" onblur="this.v();"> </div> <div class="oneStyle1"> 中文大寫:<div id="ChineseWords"></div> </div> <div class="oneStyle1"> 英文大寫:<div id="EnglishWords"></div> </div> <div style="text-align:center"> <input class="buttonStyle" id="fiveNumber" type="button" onclick="BigAmount()" value="轉化為大寫" title="轉化為大寫"> </div> </div> <script type="text/javascript"> var table = document.getElementById("table"); var width = document.documentElement.clientWidth; //瀏覽器可見區域寬 var height = document.documentElement.clientHeight; //瀏覽器可見區域高 table.style.marginLeft = ((width-800)/2)+"px"; table.style.marginTop = ((height-700)/2)+"px"; /***************************轉化為中英文大寫金額 start****************************/ function BigAmount() { var cur = document.getElementById("currency").value; var amo = document.getElementById("Amount").value if(!cur){ alert("請選擇幣種!"); return; } if(!amo){ alert("請輸入金額!"); return; } if(amo.indexOf(".")!=-1){ var a = amo.split(".")[0],b = amo.split(".")[1], c = transToEnglish1(a),d = ""; if(b.length > 2){ alert("請保留小數點後兩位!如:3.14"); }else if(b=="00"||b=="0"||b==""){ d = ""; }else{ d = " AND " + transToEnglish2(b); } document.getElementById("ChineseWords").innerHTML = allName(cur,1) + " " + transToChinese(amo); document.getElementById("EnglishWords").innerHTML = allName(cur,0) + " " + c + d; }else{ document.getElementById("ChineseWords").innerHTML = allName(cur,1) + " " + transToChinese(amo); document.getElementById("EnglishWords").innerHTML = allName(cur,0) + " " + transToEnglish(amo); } }; //翻譯成中文大寫 function transToChinese(a) { var b = 9.999999999999E10, f = "零",h = "壹",g = "貳",e = "叄",k = "肆",p = "伍",q = "陸",r = "柒",s = "捌",t = "玖", l = "拾",d = "佰",i = "仟",m = "萬",j = "億",o = "元",c = "角",n = "分",v = "整"; a = a.toString(); b = a.split("."); if (b.length > 1) { a = b[0]; b = b[1]; b = b.substr(0, 2) } else { a = b[0]; b = ""; } h = new Array(f, h, g, e, k, p, q, r, s, t); l = new Array("", l, d, i); m = new Array("", m, j); n = new Array(c, n); c = ""; if (Number(a) > 0) { for (d = j = 0; d < a.length; d++) { e = a.length - d - 1; i = a.substr(d,1); g = e / 4; e = e % 4; if (i == "0"){ j++; }else{ if (j > 0) {c += h[0];} j = 0; c += h[Number(i)] + l[e]; } if (e == 0 && j < 4) {c += m[g];} } c += o; } if (b != "") { for (d = 0; d < b.length; d++) { i = b.substr(d, 1); if (i != "0") c += h[Number(i)] + n[d]; } } if (c == "") {c = f + o;} if (b.length < 2) {c += v;} return c = c; } //翻譯成英文大寫 var arr1 = new Array("", " thousand", " million", " billion"), arr2 = new Array("zero", "ten", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"), arr3 = new Array("zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"), arr4 = new Array("ten", "eleven", "twelve", "thirteen", "fourteen", "