當前位置:軟件學堂 > 資訊首頁 > 網(wǎng)絡編程 > 編程其他 > 小寫金額轉(zhuǎn)為大寫金額JS代碼怎么寫

小寫金額轉(zhuǎn)為大寫金額JS代碼怎么寫

2012/11/7 11:12:40作者:佚名來源:網(wǎng)絡

移動端

【實例名稱】

小寫金額轉(zhuǎn)為大寫金額JS代碼怎么寫

【實例描述】

大寫金額是我國特有的一種金額表現(xiàn)形式。本例學習如何將阿拉伯數(shù)字形式的金額轉(zhuǎn)換為大寫金額。

【實例代碼】

<html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>標題頁-學無憂(yzddtk.cn)</title> </head> <body> <script language="JavaScript"> function daxie() {                                       //定義大寫數(shù)組   this.values = ["零", "壹", "貳", "叁", "肆", "伍", "陸", "柒", "捌", "玖"];   this.digits = ["", "拾", "佰", "仟"]; }

function daxie.prototype.getDaXie(money) {   if(isNaN(money)) return "";                 //如果不是數(shù)值型,直接返回空   var number = Math.round(money*100)/100;     //取數(shù)值的整數(shù)   number = number.toString(10).split('.');  //整數(shù)和小數(shù)分開   var moneyInt = number[0];                  //整數(shù)部分   var len = moneyInt.length;                 //整數(shù)的長度   if (len > 12)                             //長度如果超出范圍     return "數(shù)值超出范圍!支持的最大數(shù)為 999999999999.99!";   var returnValue = this.millonTrans(moneyInt.slice(-4));   if (len > 4)                                          //多于萬位     returnValue = this.millonTrans(moneyInt.slice(-8,-4)) + (moneyInt.slice(-8,-4)!="0000"?"萬":"") + returnValue;   if (len > 8)                                          //多于億位     returnValue = this.millonTrans(moneyInt.slice(-12,-8)) + "億" + returnValue;   if(returnValue!="")     returnValue += "圓";                                //添加最后一個字符   if(number.length==2)                                  //是否是帶小數(shù)的金額   {     var cok = number[1].split('');     if(returnValue!="" || cok[0]!="0")       returnValue += this.values[parseInt(cok[0])] + (cok[0]!="0"?"角":"");//十位數(shù)顯示角     if(cok.length>=2)       returnValue += this.values[parseInt(cok[1])] + "分";                  //個位數(shù)顯示分   }   if(returnValue!="" && !/分$/.test(returnValue))           //使用正則判斷是否有小數(shù)     returnValue += "整";   return returnValue; }

function daxie.prototype.millonTrans(strTemp) {   var money = strTemp.split('');                                //將金額轉(zhuǎn)換為數(shù)組   var mLength = money.length-1;                                 //金額的長度   var returnValue = "";   for (var i=0; i<=mLength; i++)                                //遍歷每個元素     returnValue += this.values[parseInt(money[i])] + (money[i]!='0'?this.digits[mLength-i]:"");   returnValue = returnValue.replace(/零+$/, ""). replace(/零{2,}/, "零");//返回轉(zhuǎn)換后的數(shù)值   return returnValue; }

var stmp = ""; var daXieM = new daxie(); function strTrans(strT) {   if(strT.value==stmp) return;   var ms = strT.value.replace(/[^\d\.]/g,""). replace(/(\.\d{2}).+$/,"$1");//驗證用戶的輸入   var txt = ms.split(".");       //分割成數(shù)組   while(/\d{4}(,|$)/.test(txt[0]))     txt[0] = txt[0].replace(/(\d)(\d{3}(,|$))/,"$1,$2");  //科學計數(shù)法表示形式   strT.value = stmp = txt[0]+(txt.length>1?"."+txt[1]:"");   daxieTxt.value = daXieM.getDaXie(parseFloat(ms));   //顯示大寫 } </script> 小寫金額:<input type="text" name="xiaoxieTxt" onkeyup="strTrans(this)"><br> 大寫金額:<input type="text" name="daxieTxt" size=60 readonly></body> </html>

 

 

【運行效果】

 小寫金額轉(zhuǎn)為大寫金額運行效果

【難點剖析】

本例使用“getDaXie”和“millonTrans”方法實現(xiàn)數(shù)值型數(shù)據(jù)的判斷,包括如何判斷萬位數(shù)、億位數(shù)等。代碼中多次使用正則表達式實現(xiàn)字符的搜索和替換,有關正則表達式的使用,請參考詳細資料。

【源碼下載】

為了JS代碼的準確性,請點擊:小寫金額轉(zhuǎn)為大寫金額JS代碼 進行本實例源碼下載 

標簽: 小寫金額  轉(zhuǎn)換  大寫金額