function toChinese(money){ var chNum=['零','壹','贰','叁','肆','伍','陆','柒','捌','玖']; var maxnum=999999999999.99; var num=0; var chstr = '', //返回的大写字符串 moneyint=parseInt(money)+'',//整数位 moneydec= money.toString().split('.')[1], //取小数位 len = moneyint.length; if(+money==0) {return '零元整';} else if(money <= maxnum) { //处理整数 if(moneyint >0) chstr +='元';//整数大于0,先插入元 for(var i = 0;i < len;i++){ if(i == 4 && +moneyint.slice(-8,-4)>0){//万-亿之间有数字,则插入万;否则不插入 chstr = '万 '+chstr; } else if(i == 8){//插入亿 chstr = '亿 '+chstr; } if(+moneyint[len-i-1]>0){ num = i%4; //每四位-个十百千 switch(num){ case 0:chstr=chNum[moneyint[len-i-1]]+chstr;break; //个 case 1:chstr=chNum[moneyint[len-i-1]]+'拾'+chstr;break;//拾 case 2:chstr=chNum[moneyint[len-i-1]]+'佰'+chstr;break;//佰 case 3:chstr=chNum[moneyint[len-i-1]]+'仟'+chstr;break;//仟 } }else if(i%4>0 && moneyint[len-i]>0) //非个位等于0,前一位不等于0则插入零 { chstr = '零' + chstr; } } //处理2位小数 if(+moneydec){//undefined 或00为false moneydec=moneydec.slice(0,2); var jiao = moneydec[0]; var fen = moneydec[1]; if(+jiao || +fen) { chstr += (+jiao? chNum[jiao]+'角' : '零'); chstr += (+fen ? chNum[fen]+'分' : '' ); } } else{ chstr += '整'; } } else { chstr = '超出最大处理数字 或 参数为空'; } return chstr; } var x=1112; console.log(toChinese(x));
输出
'壹仟壹佰壹拾贰元整'
参考: