js实现人民币大写金额形式转换
本文实例为大家分享了js实现金额转大写的相关代码,供大家参考,具体内容如下
functionconvertCurrency(num){//转成人民币大写金额形式 varstr1='零壹贰叁肆伍陆柒捌玖';//0-9所对应的汉字 varstr2='万仟佰拾亿仟佰拾万仟佰拾元角分';//数字位所对应的汉字 varstr3;//从原num值中取出的值 varstr4;//数字的字符串形式 varstr5='';//人民币大写金额形式 vari;//循环变量 varj;//num的值乘以100的字符串长度 varch1;//数字的汉语读法 varch2;//数字位的汉字读法 varnzero=0;//用来计算连续的零值是几个 num=Math.abs(num).toFixed(2);//将num取绝对值并四舍五入取2位小数 str4=(num*100).toFixed(0).toString();//将num乘100并转换成字符串形式 j=str4.length;//找出最高位 if(j>15){ return'溢出'; } str2=str2.substr(15-j);//取出对应位数的str2的值。如:200.55,j为5所以str2=佰拾元角分 //循环取出每一位需要转换的值 for(i=0;istr3=str4.substr(i,1);//取出需转换的某一位的值 if(i!=(j-3)&&i!=(j-7)&&i!=(j-11)&&i!=(j-15)){//当所取位数不为元、万、亿、万亿上的数字时 if(str3=='0'){ ch1=''; ch2=''; nzero=nzero+1; }else{ if(str3!='0'&&nzero!=0){ ch1='零'+str1.substr(str3*1,1); ch2=str2.substr(i,1); nzero=0; }else{ ch1=str1.substr(str3*1,1); ch2=str2.substr(i,1); nzero=0; } } }else{//该位是万亿,亿,万,元位等关键位 if(str3!='0'&&nzero!=0){ ch1="零"+str1.substr(str3*1,1); ch2=str2.substr(i,1); nzero=0; }else{ if(str3!='0'&&nzero==0){ ch1=str1.substr(str3*1,1); ch2=str2.substr(i,1); nzero=0; }else{ if(str3=='0'&&nzero>=3){ ch1=''; ch2=''; nzero=nzero+1; }else{ if(j>=11){ ch1=''; nzero=nzero+1; }else{ ch1=''; ch2=str2.substr(i,1); nzero=nzero+1; } } } } }if(i==(j-11)||i==(j-3)){//如果该位是亿位或元位,则必须写上 ch2=str2.substr(i,1); } str5=str5+ch1+ch2; if(i==j-1&&str3=='0'){//最后一位(分)为0时,加上“整” str5=str5+'整'; } } if(num==0){ str5='零元整'; } if(str5.indexOf("分")==-1){ if(str5.indexOf("拾元零")>0){ str5=str5.replace("拾元零","拾元"); }; } returnstr5; } functiondoConvert(m,n){ Ext.getCmp(m).on('change',function(){ varobjm=Ext.getCmp(m); varobjn=Ext.getCmp(n); if(!(/^\d+(\.\d+)?$/.test(objm.getValue()))){ objn.setValue(""); }else{ varmoney=convertCurrency(objm.getValue()); if(objm.getValue()==""){ objn.setValue(""); }else{ objn.setValue(money); } } varmoney=convertCurrency(objm.getValue()); if(money.indexOf("拾元零")>0){ if(money.indexOf("分")==-1){ objn.setValue(money.replace("拾元零","拾元")); } }; }); }
以上就是本文的全部内容,希望对大家学习javascript程序设计有所帮助。