将数字转化为汉字 php,将数字格式的计算结果转为汉字格式

将数字格式的计算结果转为汉字格式

更新时间:2006年10月09日 00:00:00   作者:

有没有想过将数字格式的计算结果转化为汉字格式的? 有人会问"干嘛要转, 数字形式不是蛮好嘛", 可是当这个数字很长的时候就不太容易读出来了吧, 就算是有千分位的分隔符也不易顺口说出, 因为这个符号是位英语行方便的, 不是适合我们的读法. 那就自己写一个函数来完成这项任务吧.

将下列代码加到你的网页里, 通过num2chi()函数的调用就可以实现上述功能了, 快来试一试吧. 为了各位能读懂这段代码, 在下特意加入详细注解, 还请老鸟们不要嫌罗唆, ^_^.

//----------------------FUNCTION BEGIN-----------------------------

//-------------------------------------------

//函数名: num2chi()

//叁  数: 一数字

//返回值: 一字符串

//功  能: 将难读的长串数字转为顺口读出的汉字

//作  者: chen.anson

//站  点: HTTP://dreamer.oso.com.cn

//-------------------------------------------

function num2chi(result) {

var chiresult = "";            //定义返回值叁数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 = "位";

else if (tempresult.charAt(resultlen-i)=="零"&&j==1)

chiresult = "位" + chiresult;

//--------------------------------

//避免把"幂"和"点"当做实际位数, 而且单位确认变量重新计数

else if (tempresult.charAt(resultlen-i)=="幂")

{

j=1;k=1;chiresult = tempresult.charAt(resultlen-i) + chiresult;continue;

}

else if (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

else if (j==2&&i

else if (j==3&&i

}

if (j==4&&i

if (k==4&&i

else if (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;

}

else if (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 + "次方";

}

return chiresult;

}

//----------------------FUNCTION END-------------------------------

将下面这两条语句放到script块中试运行一下看看结果对不对, 另外可以访问我的主页http://dreamer.oso.com.cn 在休闲广场里有一个彩票页面, 就是用这段代码实现的, 欢迎光临.

hi='4648000567542450084.16415846E+766600050';

document.write(hi+"
"+num2chi(hi));

相关文章

1a1b05c64693fbf380aa1344a7812747.png

第三章 php操作符与控制结构代码,学习php的朋友可以参考下。2011-12-12

4f55910a645b073bc4fc65dc10dc14bd.png

本文通过具体例子,创建Persion类,反射过程,反射后使用等方面对PHP的反射机制进行系统介绍,希望对大家学习PHP有帮助。下面就跟小编一起来看下吧2016-12-12

0ea3c7666119d5615e582f823fb3fad6.png

提升PHP执行速度全攻略(下)...2006-10-10

4f96a78db829b1556ff16de21e013c7a.png

今天小编就为大家分享一篇关于PHP PDOStatement::fetch讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧2019-01-01

8cc1031babc6aff2319f1c6af8544aa0.png

php中检查email完整性...2006-10-10

0c932a99bb7b6f23c937db507070cc7b.png

初探PHP5...2006-10-10

cca732bf65a93ed2ec0ac80c638460fe.png

简单的页面缓冲技术...2006-10-10

2d9f31f2af7b675a3d153d2b7f1035a7.png

今天小编就为大家分享一篇关于PHP PDOStatement::execute讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧2019-01-01

b452cee8ec5cd9e58ab98eba17281e59.png

基于mysql的论坛(1)...2006-10-10

f4838ec7e2d4da28e0b57d4e852dadd4.png

最简单的PHP程序--记数器...2006-10-10

最新评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值