1. 程式人生 > >js將阿拉伯數字轉換成大寫金額

js將阿拉伯數字轉換成大寫金額

function changeMoneyToChinese(money){
	    var cnNums = new Array("零","壹","貳","叄","肆","伍","陸","柒","捌","玖"); //漢字的數字
	    var cnIntRadice = new Array("","拾","佰","仟"); //基本單位
	    var cnIntUnits = new Array("","萬","億","兆"); //對應整數部分擴充套件單位
	    var cnDecUnits = new Array("角","分","毫","釐"); //對應小數部分單位
	    var cnInteger = "整"; //整數金額時後面跟的字元
	    var cnIntLast = "元"; //整型完以後的單位
	    var maxNum = 999999999999999.9999; //最大處理的數字
	    
	    var IntegerNum; //金額整數部分
	    var DecimalNum; //金額小數部分
	    var ChineseStr=""; //輸出的中文金額字串
	    var parts; //分離金額後用的陣列,預定義
	    if( money == "" ){
	        return "";
	    }
	    money = parseFloat(money);
	    if( money >= maxNum ){
	        $.alert('超出最大處理數字');
	        return "";
	    }
	    if( money == 0 ){
	        ChineseStr = cnNums[0]+cnIntLast+cnInteger;
	        //document.getElementById("show").value=ChineseStr;
	        return ChineseStr;
	    }
	    money = money.toString(); //轉換為字串
	    if( money.indexOf(".") == -1 ){
	        IntegerNum = money;
	        DecimalNum = '';
	    }else{
	        parts = money.split(".");
	        IntegerNum = parts[0];
	        DecimalNum = parts[1].substr(0,4);
	    }
	    if( parseInt(IntegerNum,10) > 0 ){//獲取整型部分轉換
	        zeroCount = 0;
	        IntLen = IntegerNum.length;
	        for( i=0;i<IntLen;i++ ){
	            n = IntegerNum.substr(i,1);
	            p = IntLen - i - 1;
	            q = p / 4;
	            m = p % 4;
	            if( n == "0" ){
	                zeroCount++;
	            }else{
	                if( zeroCount > 0 ){
	                    ChineseStr += cnNums[0];
	                }
	                zeroCount = 0; //歸零
	                ChineseStr += cnNums[parseInt(n)]+cnIntRadice[m];
	            }
	            if( m==0 && zeroCount<4 ){
	                ChineseStr += cnIntUnits[q];
	            }
	        }
	        ChineseStr += cnIntLast;
	        //整型部分處理完畢
	    }
	    if( DecimalNum!= '' ){//小數部分
	        decLen = DecimalNum.length;
	        for( i=0; i<decLen; i++ ){
	            n = DecimalNum.substr(i,1);
	            if( n != '0' ){
	                ChineseStr += cnNums[Number(n)]+cnDecUnits[i];
	            }
	        }
	    }
	    if( ChineseStr == '' ){
	        ChineseStr += cnNums[0]+cnIntLast+cnInteger;
	    }else if( DecimalNum == '' ){
	        ChineseStr += cnInteger;
	    }
	    alert(ChineseStr);
	    return ChineseStr;
	}