注册 | 登录 忘记密码? 51cto首页 | 博客 | 论坛 | 招聘
热点文章 对江西某电信服务器的一次..
 帮助

javascript将数字金额变成中文大写金额


2007-06-23 14:47:15
 标签:javascript   [推送到技术圈]

 
这个是我在网上找的javascript的方法,可以将数字金额转换成大写的中文汉字,我测试过了,在我的程序中使用了,而且很好用。忘记是哪位仁兄写的了,在此表示感谢了。我本人不是javascript的高手,只能用别人的了。
      这个方法可以直接拷贝到页面中调用,没有问题!给那些遇到同样问题的兄弟们! 
 
/*
         功能:将货币数字(阿拉伯数字)(小写)转化成中文(大写)
    
         参数:Num为字符型,小数点之后保留两位,例:Arabia_to_Chinese("1234.06")
         说明:1.目前本转换仅支持到 拾亿(元) 位,金额单位为元,不能为万元,最小单位为分
                 2.不支持负数
     */

     function numtochinese(Num)
{
        for(i=Num.length-1;i>=0;i--)
        {
     Num = Num.replace(",","")//替换tomoney()中的“,”
     Num = Num.replace(" ","")//替换tomoney()中的空格
        }
    
        Num = Num.replace("¥","")//替换掉可能出现的¥字符
        if(isNaN(Num))    
        {
     //验证输入的字符是否为数字
     alert("请检查小写金额是否正确");
     return;
        }
        //---字符处理完毕,开始转换,转换采用前后两部分分别转换---//
        part = String(Num).split(".");
        newchar = "";    
        //小数点前进行转化
        for(i=part[0].length-1;i>=0;i--)
        {
         if(part[0].length > 10){ alert("位数过大,无法计算");return "";}//若数量超过拾亿单位,提示
     tmpnewchar = ""
     perchar = part[0].charAt(i);
     switch(perchar){
     case "0": tmpnewchar="零" + tmpnewchar ;break;
     case "1": tmpnewchar="壹" + tmpnewchar ;break;
     case "2": tmpnewchar="贰" + tmpnewchar ;break;
     case "3": tmpnewchar="叁" + tmpnewchar ;break;
     case "4": tmpnewchar="肆" + tmpnewchar ;break;
     case "5": tmpnewchar="伍" + tmpnewchar ;break;
     case "6": tmpnewchar="陆" + tmpnewchar ;break;
     case "7": tmpnewchar="柒" + tmpnewchar ;break;
     case "8": tmpnewchar="捌" + tmpnewchar ;break;
     case "9": tmpnewchar="玖" + tmpnewchar ;break;
         }
         switch(part[0].length-i-1)
    {
     case 0: tmpnewchar = tmpnewchar +"元" ;break;
     case 1: if(perchar!=0)tmpnewchar= tmpnewchar +"拾" ;break;
     case 2: if(perchar!=0)tmpnewchar= tmpnewchar +"佰" ;break;
     case 3: if(perchar!=0)tmpnewchar= tmpnewchar +"仟" ;break;    
     case 4: tmpnewchar= tmpnewchar +"万" ;break;
     case 5: if(perchar!=0)tmpnewchar= tmpnewchar +"拾" ;break;
     case 6: if(perchar!=0)tmpnewchar= tmpnewchar +"佰" ;break;
     case 7: if(perchar!=0)tmpnewchar= tmpnewchar +"仟" ;break;
     case 8: tmpnewchar= tmpnewchar +"亿" ;break;
     case 9: tmpnewchar= tmpnewchar +"拾" ;break;
         }
         newchar = tmpnewchar + newchar;
        }
        //小数点之后进行转化
        if(Num.indexOf(".")!=-1)
        {
         if(part[1].length > 2)
         {
        alert("小数点之后只能保留两位,系统将自动截段");
        part[1] = part[1].substr(0,2)
     }
         for(i=0;i<part[1].length;i++)
         {
        tmpnewchar = ""
        perchar = part[1].charAt(i)
        switch(perchar){
        case "0": tmpnewchar="零" + tmpnewchar ;break;
        case "1": tmpnewchar="壹" + tmpnewchar ;break;
        case "2": tmpnewchar="贰" + tmpnewchar ;break;
        case "3": tmpnewchar="叁" + tmpnewchar ;break;
        case "4": tmpnewchar="肆" + tmpnewchar ;break;
        case "5": tmpnewchar="伍" + tmpnewchar ;break;
        case "6": tmpnewchar="陆" + tmpnewchar ;break;
        case "7": tmpnewchar="柒" + tmpnewchar ;break;
        case "8": tmpnewchar="捌" + tmpnewchar ;break;
        case "9": tmpnewchar="玖" + tmpnewchar ;break;
     }
     if(i==0)tmpnewchar =tmpnewchar + "角";
     if(i==1)tmpnewchar = tmpnewchar + "分";
     newchar = newchar + tmpnewchar;
         }
        }
        //替换所有无用汉字
        while(newchar.search("零零") != -1)
            newchar = newchar.replace("零零", "零");
        newchar = newchar.replace("零亿", "亿");
        newchar = newchar.replace("亿万", "亿");
        newchar = newchar.replace("零万", "万");    
        newchar = newchar.replace("零元", "元");
        newchar = newchar.replace("零角", "");
        newchar = newchar.replace("零分", "");
    
        if (newchar.charAt(newchar.length-1) == "元" || newchar.charAt(newchar.length-1) == "角")
         newchar = newchar+"整"
        return newchar;
}




    文章评论
 
2007-07-30 00:14:58
这个不错,最近写的一个客运管理系统里面有个网页写的收据,客户要打印,正在想着怎么增加“易用性”呢,现在好了,有了这个脚本,客户只需输入小写的金额,相应的大写金额就也有了,收藏了,谢谢了/

2008-10-30 10:33:58
好东西啊。。谢谢大哥的提供。。有好东东多多传上来啊!!!!

 

发表评论

昵   称:
验证码:  点击图片可刷新验证码  博客过2级,无需填写验证码
内   容: