将数字转换成大写的人民币表达式的js函数
将数字转换成大写的人民币,方法有很多,本例介绍的是使用js来完成的,看看下面的实现代码
functionchangeNumMoneyToChinese(money){
varcnNums=newArray("零","壹","贰","叁","肆","伍","陆","柒","捌","玖");//汉字的数字
varcnIntRadice=newArray("","拾","佰","仟");//基本单位
varcnIntUnits=newArray("","万","亿","兆");//对应整数部分扩展单位
varcnDecUnits=newArray("角","分","毫","厘");//对应小数部分单位
varcnInteger="整";//整数金额时后面跟的字符
varcnIntLast="元";//整型完以后的单位
varmaxNum=999999999999999.9999;//最大处理的数字
varIntegerNum;//金额整数部分
varDecimalNum;//金额小数部分
varChineseStr="";//输出的中文金额字符串
varparts;//分离金额后用的数组,预定义
if(money==""){
return"";
}
money=parseFloat(money);
if(money>=maxNum){
alert('超出最大处理数字');
return"";
}
if(money==0){
ChineseStr=cnNums[0]+cnIntLast+cnInteger;
returnChineseStr;
}
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){//获取整型部分转换
varzeroCount=0;
varIntLen=IntegerNum.length;
for(vari=0;i<IntLen;i++){
varn=IntegerNum.substr(i,1);
varp=IntLen-i-1;
varq=p/4;
varm=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!=''){//小数部分
vardecLen=DecimalNum.length;
for(vari=0;i<decLen;i++){
varn=DecimalNum.substr(i,1);
if(n!='0'){
ChineseStr+=cnNums[Number(n)]+cnDecUnits[i];
}
}
}
if(ChineseStr==''){
ChineseStr+=cnNums[0]+cnIntLast+cnInteger;
}elseif(DecimalNum==''){
ChineseStr+=cnInteger;
}
returnChineseStr;
}