有没有想过将数字格式的计算结果转化为汉字格式的?有人会问"干嘛要转,数字形式不是蛮好嘛",可是当这个数字很长的时候就不太容易读出来了吧,就算是有千分位的分隔符也不易顺口说出,因为这个符号是位英语行方便的,不是适合我们的读法.那就自己写一个函数来完成这项任务吧.下面学步园小编来讲解下怎样将数字格式的计算结果转为汉字格式?
怎样将数字格式的计算结果转为汉字格式
//----------------------FUNCTIONBEGIN-----------------------------
//-------------------------------------------
//函数名:num2chi()
//叁数:一数字
//返回值:一字符串
//功能:将难读的长串数字转为顺口读出的汉字
//作者:chen.anson
//站点:HTTP://dreamer.oso.com.cn
//-------------------------------------------
functionnum2chi(result){
varchiresult="";//定义返回值叁数chiresult为字符形式
result=result.toString();//将result转为字符形式
result=result.toLowerCase();
resultlen=result.length;//定义resultlen为result的长度
tempresult=result;//定义中间变量tempresult
for(i=1;i<=resultlen;i++)//将字符串tempresult中的全部数字替换为汉字 { tempresult=tempresult.replace("1","一"); tempresult=tempresult.replace("2","二"); tempresult=tempresult.replace("3","三"); tempresult=tempresult.replace("4","四"); tempresult=tempresult.replace("5","五"); tempresult=tempresult.replace("6","六"); tempresult=tempresult.replace("7","七"); tempresult=tempresult.replace("8","八"); tempresult=tempresult.replace("9","九"); tempresult=tempresult.replace("0","零"); tempresult=tempresult.replace(".","点"); tempresult=tempresult.replace("e+","幂"); } while(tempresult.indexOf("零零")!=-1)//避免字符串tempresult中出现"零零",但又不能改变字符串长度 { tempresult=tempresult.replace("零零","位零"); } resultlen=tempresult.length;//再次确认tempresult的长度,因"e+"->"幂"会引起长度变化
for(i=1,j=1,k=1;i<=resultlen;i++)//开始转换,i为位数确认叁数,j为"十百千"确认叁数,k为"万亿"确认叁数 { //防止尾数为零,如八拾零,二拾零万 if(tempresult.charAt(resultlen-1)=="零"&&i==1) chiresult="位"; elseif(tempresult.charAt(resultlen-i)=="零"&&j==1) chiresult="位"+chiresult; //-------------------------------- //避免把"幂"和"点"当做实际位数,而且单位确认变量重新计数 elseif(tempresult.charAt(resultlen-i)=="幂") { j=1;k=1;chiresult=tempresult.charAt(resultlen-i)+chiresult;continue; } elseif(tempresult.charAt(resultlen-i)=="点") { j=1;k=1;chiresult=tempresult.charAt(resultlen-i)+chiresult;continue; } //-------------------------------------- else chiresult=tempresult.charAt(resultlen-i)+chiresult; //添加数字单位 if(tempresult.charAt(resultlen-i-1)!="位"&&tempresult.charAt(resultlen-i-1)!="零"&&tempresult.charAt(resultlen-i-1)!="幂") { if(j==1&&i elseif(j==2&&i elseif(j==3&&i } if(j==4&&i if(k==4&&i elseif(k==8&&i //----------- j++;k++; } while(chiresult.indexOf("位")!=-1)//避免字符串chiresult中出现"位" { chiresult=chiresult.replace("位",""); } if(chiresult.substr(0,2)=="一拾")//避免出现"一拾二"等情况 chiresult=chiresult.substring(1,chiresult.length); //幂和小数点後的数字应直接读出,而没有单位 if(chiresult.search("幂")>=0&&chiresult.search("点")>=0)
{
rebegin=chiresult.substring(0,chiresult.indexOf("点"));
relast=chiresult.substring(chiresult.indexOf("幂"),chiresult.length);
remid=chiresult.substring(chiresult.indexOf("点"),chiresult.indexOf("幂"));
for(i=1;i<=remid.length;i++) { remid=remid.replace("拾",""); remid=remid.replace("百",""); remid=remid.replace("千",""); remid=remid.replace("万",""); remid=remid.replace("亿",""); } chiresult=rebegin+remid+relast; } elseif(chiresult.search("幂")<0&&chiresult.search("点")>=0)
{
rebegin=chiresult.substring(0,chiresult.indexOf("点"));
relast=chiresult.substring(chiresult.indexOf("点"),chiresult.length);
for(i=1;i<=relast.length;i++) { relast=relast.replace("拾",""); relast=relast.replace("百",""); relast=relast.replace("千",""); relast=relast.replace("万",""); relast=relast.replace("亿",""); } chiresult=rebegin+relast; } if(chiresult.search("幂")>=0)//将"幂"替换为"乘以拾的",这样可以直接读出
{
chiresult=chiresult.replace("幂","乘以拾的");
chiresult=chiresult+"次方";
}
returnchiresult;
}
怎样将数字格式的计算结果转为汉字格式
//----------------------FUNCTIONEND-------------------------------
将下面这两条语句放到script块中试运行一下看看结果对不对,另外可以访问我的主页http://dreamer.oso.com.cn在休闲广场里有一个彩票页面,就是用这段代码实现的,欢迎光临.
hi='4648000567542450084.16415846E+766600050';
document.write(hi+"
"+num2chi(hi));
以上就是关于“怎样将数字格式的计算结果转为汉字格式”的内容,希望对大家有用。更多资讯请关注学步园。学步园,您学习IT技术的优质平台!