將一串數字轉為大寫人民幣形式
阿新 • • 發佈:2019-01-01
數字轉人民幣大寫形式
function toChinese(str){ //大寫數字 var arrNum = ['零','壹','貳','叄','肆','伍','陸','柒','捌','玖'] // 基本單位 var Intdanwei1 = ['','拾','佰','仟']; var Intdanwei2 = ['','萬','億','兆']; var Floatdanwei = ['角','分','毫','釐'] var zheng = "整"; var yuan = '元'; //最大數字 var maxNum = 9999999999999999.9999 //整數部分 var zhengNum; //小數部分 var floatNum; //裝整形和小數的陣列 var parts; //輸出的字串 var chinese = ''; //引數為空 if(str == ''){ return ''; } //引數不為空時 str = parseFloat(str) //最大數字 if( str > maxNum){ return ''; } //如果傳的數字為0 if(str == 0){ chinese = arrNum[0] + zheng + yuan; } //如果傳的數字不為0; str = str.toString(); //判斷str是否有小數點 if(str.indexOf('.') == -1){ zhengNum = str; floatNum = ''; }else{ parts = str.split('.'); //以點分割為陣列 zhengNum = parts[0]; //整數部分 floatNum = parts[1].substr(0,4); //保留四位小數 } //整數部分轉換 if(parseInt(zhengNum,10) > 0){ var count = 0; var lens = zhengNum.length; for(var i = 0 ; i < lens; i++){ //每次迴圈擷取一個字元 var n = zhengNum.substr(i,1); //擷取的字元在字串中的位置 var p = lens - i - 1; //根據結果匹配單位 var q = p/4; //根據結果匹配單位 var m = p%4; if(n == '0'){ //新增'零' count++; }else{ if(count > 0){ //新增'零' chinese += arrNum[0]; //恢復count值為0; count = 0; } chinese += arrNum[Number(n)] + Intdanwei1[m] } //如果m=0,那麼當前字串的位置為4的倍數,根據單位的特點,4位一分割,取得當前字串的單位 if(m == 0){ chinese += Intdanwei2[q] } } chinese += yuan; } //小數部分轉換 if(floatNum != ''){ var floatLen = floatNum.length; for(var i = 0 ; i < floatLen; i++){ var n = floatNum.substr(i,1); if(n != '0'){ chinese += arrNum[parseInt(n)] + Floatdanwei[i] } } }else{ chinese += zheng; }; if(chinese == ''){ chinese = arrNum[0] + zheng + yuan; } return chinese; }