排一下版:
                  function chinesemoney()  //     小写金额转(中文)大写
{
  var money=event.srcElement.value;
  money=String(eval(money)+0.005); //小数四舍五入
  var num  = '零壹贰叁肆伍陆柒捌玖';
  var unit = '千百拾亿千百拾万千百拾元';
  var unit0= '角分';
  var dax ='';
  var dian=money.indexOf('.');
if (dian<0)
{
dian=money.length;
}   
if (eval(money)>=0.01)//防止显示空值和小于0.5分的值
{
 var money1=money.substr(0,dian);
                         
         for (var i=0; i < money1.length; i++)
         {
          var aaa=money1.substr(i,1);
          var shu=eval(aaa);
          dax=dax+num.substr(shu,1)+unit.substr(12-money1.length+i,1);
         }
         var xs=money.substr(dian+1,2);
 if (eval(xs)>0)
 {
           money1=money.substr(dian+1,1);           
           shu=eval(money1);
           var money2=money.substr(dian+2,1);
           var fen=eval(money2);
         dax=dax+num.substr(shu,1)+unit0.substr(0,1)+num.substr(fen,1)+unit0.substr(1,1);
           }
if(eval(xs)==0 || eval(xs)==null)
{
                   dax=dax+'整';
                                   }
                    event.srcElement.value=dax;//原处显示
                  return dax;
                }
                }

解决方案 »

  1.   

    用 indexOf 和 substr 没有使用正则的简洁:
    function Chinese(num)  //将阿拉伯数字翻译成中文的大写数字
    {
        if(!/^\d*(\.\d*)?$/.test(num)) throw(new Error(-1, "Number is wrong!"));    var AA = new Array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖");
        var BB = new Array("","拾","佰","仟","萬","億","圆","");
        var CC = new Array("角", "分", "厘");
        
        var a = (""+ num).replace(/(^0*)/g, "").split("."), k = 0, re = "";    for(var i=a[0].length-1; i>=0; i--)  //author: meizz
        {
            switch(k)
            {
                case 0 : re = BB[7] + re; break;
                case 4 : if(!new RegExp("0{4}\\d{"+ (a[0].length-i-1) +"}$").test(a[0]))
                         re = BB[4] + re; break;
                case 8 : re = BB[5] + re; BB[7] = BB[5]; k = 0; break;
            }
            if(k%4 == 2 && a[0].charAt(i)=="0" && a[0].charAt(i+2) != "0") re = AA[0] + re;
            if(a[0].charAt(i) != 0) re = AA[a[0].charAt(i)] + BB[k%4] + re; k++;
        }    if(a.length>1) //加上小数部分(如果有小数部分)
        {
            re += BB[6];
            for(var i=0; i<a[1].length; i++)
            {
              re += AA[a[1].charAt(i)] + CC[i];
              if(i==2) break;
            }
        }
        return re;
    }
    document.write(Chinese("2345678.6792"));
      

  2.   

    MEIZZD的写法是有BUG的。她是先把整数小数分开,那么:999。995就错了。