function Chinese(num)  //
{
    if(!/^\d*(\.\d*)?$/.test(num)){alert("Number is wrong!"); return "Number is wrong!";}    var AA = new Array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖");
    var BB = new Array("圆","拾","佰","仟","萬","億","点","");
    
    var a = (""+ num).replace(/(^0*)/g, "").split("."), k = 0, re = "";    for(var i=a[0].length-1; i>=0; i--)
    {
        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+2) != 0 && a[0].charAt(i+1) == 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)];
    }
    return re;
}

解决方案 »

  1.   


    圆放到后面了。
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <TITLE> New Document </TITLE>
    <META NAME="Generator" CONTENT="EditPlus">
    <META NAME="Author" CONTENT="">
    <META NAME="Keywords" CONTENT="">
    <META NAME="Description" CONTENT="">
    </HEAD><BODY>
    <FORM METHOD=POST ACTION="">
    <INPUT TYPE="text" NAME="num">
    <INPUT TYPE="button" name="test" value="金额转化为大写汉字" onclick="alert(Chinese(document.all.num.value));">
    </FORM>
    </BODY>
    </HTML>
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    function Chinese(num)  //
    {
        if(!/^\d*(\.\d*)?$/.test(num)){alert("Number is wrong!"); return "Number is wrong!";}    var AA = new Array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖");
        var BB = new Array("圆","拾","佰","仟","萬","億","点","");
        
        var a = (""+ num).replace(/(^0*)/g, "").split("."), k = 0, re = "";    for(var i=a[0].length-1; i>=0; i--)
        {
            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+2) != 0 && a[0].charAt(i+1) == 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 = re.substring(0,re.length-1);
    re += BB[6];
            for(var i=0; i<a[1].length; i++) re += AA[a[1].charAt(i)];
    re += BB[0];
        }
        return re;
    }//-->
    </SCRIPT>
      

  2.   

    /**
     * 人民币金额大小写转化
     */function ChangeToBig(value)
    {
            var intFen,i;
            var strArr,strCheck,strFen,strDW,strNum,strBig,strNow;
            if (value == null)   //数据非法时提示,并返回空串
            {
                    strErr = "数据"+value+"非法!"
                    alert(strErr);
                    return "";
            }
            if(value==0)
                    return "零";
            strCheck = value+".";
            strArr = strCheck.split(".");
            strCheck = strArr[0];
            if(strCheck.length>12)   //数据大于等于一万亿时提示无法处理
            {
                    strErr = "数据"+value+"过大,无法处理!"
                    alert(strErr);
                    return "";
            }
            try
            {
                    i = 0;
                    strBig = "";
                    intFen = value*100;          //转换为以分为单位的数值
                    strFen = intFen.toString();
                    strArr = strFen.split(".");
                    strFen = strArr[0];
                    intFen = strFen.length;      //获取长度
                    strArr = strFen.split("");//将各个数值分解到数组内
                    while(intFen!=0)   //分解并转换
                    {
                            i = i+1;
                            switch(i)              //选择单位
                            {
                                    case 1:strDW = "分";break;
                                    case 2:strDW = "角";break;
                                    case 3:strDW = "元";break;
                                    case 4:strDW = "拾";break;
                                    case 5:strDW = "佰";break;
                                    case 6:strDW = "仟";break;
                                    case 7:strDW = "万";break;
                                    case 8:strDW = "拾";break;
                                    case 9:strDW = "佰";break;
                                    case 10:strDW = "仟";break;
                                    case 11:strDW = "亿";break;
                                    case 12:strDW = "拾";break;
                                    case 13:strDW = "佰";break;
                                    case 14:strDW = "仟";break;
                            }
                            switch (strArr[intFen-1])              //选择数字
                            {
                                    case "1":strNum = "壹";break;
                                    case "2":strNum = "贰";break;
                                    case "3":strNum = "叁";break;
                                    case "4":strNum = "肆";break;
                                    case "5":strNum = "伍";break;
                                    case "6":strNum = "陆";break;
                                    case "7":strNum = "柒";break;
                                    case "8":strNum = "捌";break;
                                    case "9":strNum = "玖";break;
                                    case "0":strNum = "零";break;
                            }
                            //处理特殊情况
                            strNow = strBig.split("");
                            //分为零时的情况
                            if((i==1)&&(strArr[intFen-1]=="0"))
                                    strBig = "整";
                            //角为零时的情况
                            else if((i==2)&&(strArr[intFen-1]=="0"))
                            {    //角分同时为零时的情况
                                    if(strBig!="整")
                                    strBig = "零"+strBig;
                            }
                            //元为零的情况
                            else if((i==3)&&(strArr[intFen-1]=="0"))
                                    strBig = "元"+strBig;
                            //拾-仟中一位为零且其前一位(元以上)不为零的情况时补零
                            else if((i<7)&&(i>3)&&(strArr[intFen-1]=="0")&&(strNow[0]!="零")&&(strNow[0]!="元"))
                                    strBig = "零"+strBig;
                            //拾-仟中一位为零且其前一位(元以上)也为零的情况时跨??
                            else if((i<7)&&(i>3)&&(strArr[intFen-1]=="0")&&(strNow[0]=="零"))
                            {} 
                            //拾-仟中一位为零且其前一位是元且为零的情况时跨过
                            else if((i<7)&&(i>3)&&(strArr[intFen-1]=="0")&&(strNow[0]=="元"))
                            {}
                            //当万为零时必须补上万字
                            else if((i==7)&&(strArr[intFen-1]=="0"))
                                   strBig ="万"+strBig;
                            //拾万-仟万中一位为零且其前一位(万以上)不为零的情况时补零
                            else if((i<11)&&(i>7)&&(strArr[intFen-1]=="0")&&(strNow[0]!="零")&&(strNow[0]!="万"))
                                    strBig = "零"+strBig;
                            //拾?颍蛑幸晃晃闱移淝耙晃唬ㄍ蛞陨希┮参愕那榭鍪笨绻?
                            else if((i<11)&&(i>7)&&(strArr[intFen-1]=="0")&&(strNow[0]=="万"))
                            {}
                            //拾万-仟万中一位为零且其前一位为万位且为零的情况时跨过
                            else if((i<11)&&(i>7)&&(strArr[intFen-1]=="0")&&(strNow[0]=="零"))
                            {}
                            //万位为零且存在仟位和十万以上时,在万仟间补零
                            else if((i<11)&&(i>8)&&(strArr[intFen-1]!="0")&&(strNow[0]=="万")&&(strNow[2]=="仟"))
                            strBig = strNum+strDW+"万零"+strBig.substring(1,strBig.length);
                            //单独处理亿位
                            else if(i==11)
                            {
                                    //亿位为零且万全为零存在仟位时,去掉万补为零
                                    if((strArr[intFen-1]=="0")&&(strNow[0]=="万")&&(strNow[2]=="仟"))
                                            strBig ="亿"+"零"+strBig.substring(1,strBig.length);
                                    //亿位为零且万全为零不存在仟位时,去掉万
                                    else if((strArr[intFen-1]=="0")&&(strNow[0]=="万")&&(strNow[2]!="仟"))
                                            strBig ="亿"+strBig.substring(1,strBig.length);
                                    //亿位不为零且万全为零存在仟位时,去掉万补为零
                                    else if((strNow[0]=="万")&&(strNow[2]=="仟"))
                                            strBig = strNum+strDW+"零"+strBig.substring(1,strBig.length);
                                    //亿位不为零且万全为零不存在仟位时,去掉万
                                    else if((strNow[0]=="万")&&(strNow[2]!="仟"))
                                            strBig = strNum+strDW+strBig.substring(1,strBig.length);
      

  3.   

    //其他正常情况
                                    else
                                            strBig = strNum+strDW+strBig;
                            }
                            //拾亿-仟亿中一位为零且其前一位(亿以上)不为零的情况时补零
                            else if((i<15)&&(i>11)&&(strArr[intFen-1]=="0")&&(strNow[0]!="零")&&(strNow[0]!="亿"))
                                    strBig = "零"+strBig;
                            //拾亿-仟亿中一位为零且其前一位(亿以上)也为零的情况时跨过
                            else if((i<15)&&(i>11)&&(strArr[intFen-1]=="0")&&(strNow[0]=="亿"))
                            {}
                            //拾亿-仟亿中一位为零且其前一位为亿位且为零的情况时跨过
                            else if((i<15)&&(i>11)&&(strArr[intFen-1]=="0")&&(strNow[0]=="零"))
                            {}
                            //亿位为零且不存在仟万位和十亿以上时去掉上次写入的??
                            else if((i<15)&&(i>11)&&(strArr[intFen-1]!="0")&&(strNow[0]=="零")&&(strNow[1]=="亿")&&(strNow[3]!="仟"))                                strBig = strNum+strDW+strBig.substring(1,strBig.length);                        //亿位为零且存在仟万位和十亿以上时,在亿仟万间补零                        else if((i<15)&&(i>11)&&(strArr[intFen-1]!="0")&&(strNow[0]=="零")&&(strNow[1]=="亿")&&(strNow[3]=="仟"))                                strBig = strNum+strDW+"亿零"+strBig.substring(2,strBig.length);                        else                                strBig = strNum+strDW+strBig;
                                    strFen = strFen.substring(0,intFen-1);
                                    intFen = strFen.length;
                                    strArr = strFen.split("");
                    }
                    return strBig;
            }catch(err){
                    return "";      //若失败则返回原值
            }
    }