// 当数字长度超过aiMaxOut时返回文字"金额值超出允许范围!"
function Money_Format(aiMoney,acType,aiMaxOut){ //大写人民币转换(以分为单位)
if (!aiMaxOut){aiMaxOut = 7;}
lcMoney = parseFloat(aiMoney)+"";
if (lcMoney=='NaN'){lcMoney='0.00'}
if (lcMoney.indexOf('.')==-1){
        lcMoney=lcMoney+".00"
     }else{
        lcMoney=lcMoney.substring(0,lcMoney.indexOf('.')+3)
     if (((lcMoney.substring(lcMoney.indexOf('.'))).length)==2){lcMoney=lcMoney+'0'}
}
lcMoneyNs = lcMoney;
lcMoney = lcMoney.replace('.','')
lcMoney = lcMoney.replace('-','')
var liLength=lcMoney.length , lcFormat="";
for (i=1; i<=(aiMaxOut-liLength); i++){
lcMoney = '0' + lcMoney;
}
if (liLength>aiMaxOut){lcFormat = '<span class=Right>金额值超出允许范围!</span>';aiMaxOut=0;}
liLength=aiMaxOut;
var AlterlcMoney= new Array();
AlterlcMoney[0]="零";AlterlcMoney[1]="壹";AlterlcMoney[2]="贰";AlterlcMoney[3]="叁";AlterlcMoney[4]="肆";AlterlcMoney[5]="伍";AlterlcMoney[6]="陆";AlterlcMoney[7]="柒";AlterlcMoney[8]="捌";AlterlcMoney[9]="玖";
for (i=1; i<=liLength; i++){
var liTempMoney = parseFloat(lcMoney.substring(liLength-i));
lcMoney = lcMoney.substring(0,liLength-i);
if (i==1){lcFormat ="分" + lcFormat;}
if (i==2){lcFormat ="角" + lcFormat;}
if (i==3){lcFormat ="元" + lcFormat;}
if (i==4){lcFormat ="拾" + lcFormat;}
if (i==5){lcFormat ="佰" + lcFormat;}
if (i==6){lcFormat ="仟" + lcFormat;}
if (i==7){lcFormat ="万" + lcFormat;}
if (i==8){lcFormat ="拾" + lcFormat;}
if (i==9){lcFormat ="佰" + lcFormat;}
if (i==10){lcFormat ="仟"+ lcFormat;}
lcFormat = "<span class=Right>" + AlterlcMoney[liTempMoney] + "</span>" + lcFormat;
}
lcMoney = lcFormat;
if (acType=="N"){
return lcMoneyNs;
}else{
return lcMoney;
}
}

解决方案 »

  1.   

    <script>
    alert(MoneyFormat(12345.45,7)); function  MoneyFormat(aiMoney,aiMaxOut){ //大写人民币转换(以分为单位) 
    if  (!aiMaxOut){aiMaxOut  =  7;} 
    lcMoney  =  parseFloat(aiMoney)+""; 
    if  (lcMoney=='NaN'){lcMoney='0.00'} 
    if  (lcMoney.indexOf('.')==-1){ 
                    lcMoney=lcMoney+".00" 
              }else{ 
                    lcMoney=lcMoney.substring(0,lcMoney.indexOf('.')+3) 
              if  (((lcMoney.substring(lcMoney.indexOf('.'))).length)==2){lcMoney=lcMoney+'0'} 

    lcMoneyNs  =  lcMoney; 
    lcMoney  =  lcMoney.replace('.','') 
    lcMoney  =  lcMoney.replace('-','') 
    var  liLength=lcMoney.length  ,  lcFormat=""; 
    for  (i=1;  i<=(aiMaxOut-liLength);  i++){ 
    lcMoney  =  '0'  +  lcMoney; 

    if  (liLength>aiMaxOut){lcFormat  =  '金额值超出范围!';aiMaxOut=0;} 
    liLength=aiMaxOut; 
    var  AlterlcMoney=  new  Array(); 
    AlterlcMoney[0]="零";AlterlcMoney[1]="壹";AlterlcMoney[2]="贰";AlterlcMoney[3]="叁";AlterlcMoney[4]="肆";AlterlcMoney[5]="伍";AlterlcMoney[6]="陆";AlterlcMoney[7]="柒";AlterlcMoney[8]="捌";AlterlcMoney[9]="玖"; 
    for  (i=1;  i<=liLength;  i++){ 
    var  liTempMoney  =  parseFloat(lcMoney.substring(liLength-i)); 
    lcMoney  =  lcMoney.substring(0,liLength-i); 
    if  (i==1){lcFormat  ="分"  +  lcFormat;} 
    if  (i==2){lcFormat  ="角"  +  lcFormat;} 
    if  (i==3){lcFormat  ="元"  +  lcFormat;} 
    if  (i==4){lcFormat  ="拾"  +  lcFormat;} 
    if  (i==5){lcFormat  ="佰"  +  lcFormat;} 
    if  (i==6){lcFormat  ="仟"  +  lcFormat;} 
    if  (i==7){lcFormat  ="万"  +  lcFormat;} 
    if  (i==8){lcFormat  ="拾"  +  lcFormat;} 
    if  (i==9){lcFormat  ="佰"  +  lcFormat;} 
    if  (i==10){lcFormat  ="仟"+  lcFormat;} 
    lcFormat  =  AlterlcMoney[liTempMoney]  +  lcFormat; 

    lcMoney  =  lcFormat; 
    return  lcMoney; 
    }
    </script>
      

  2.   

    写得还可以。但有一点小问题。如果aiMaxOut为9,而我只输入的数据小9为:12345.12
    前面会出现:零佰零拾壹万贰仟叁佰肆拾伍元壹角贰分
    你能不能除前面零,不要用aiMaxOut这个参数的限制。
    <script>
    function doChange(){
    var iMoney = document.all.t1.value ;
    document.all.divid.innerHTML=Money_Format(iMoney,"",9);
    }
    // 当数字长度超过aiMaxOut时返回文字"金额值超出允许范围!"
    function Money_Format(aiMoney,acType,aiMaxOut){ //大写人民币转换(以分为单位)
    if (!aiMaxOut){aiMaxOut = 7;}
    lcMoney = parseFloat(aiMoney)+"";
    if (lcMoney=='NaN'){lcMoney='0.00'}
    if (lcMoney.indexOf('.')==-1){
            lcMoney=lcMoney+".00"
         }else{
            lcMoney=lcMoney.substring(0,lcMoney.indexOf('.')+3)
         if (((lcMoney.substring(lcMoney.indexOf('.'))).length)==2){lcMoney=lcMoney+'0'}
    }
    lcMoneyNs = lcMoney;
    lcMoney = lcMoney.replace('.','')
    lcMoney = lcMoney.replace('-','')
    var liLength=lcMoney.length , lcFormat="";
    for (i=1; i<=(aiMaxOut-liLength); i++){
    lcMoney = '0' + lcMoney;
    }
    if (liLength>aiMaxOut){lcFormat = '<span class=Right>金额值超出允许范围!</span>';aiMaxOut=0;}
    liLength=aiMaxOut;
    var AlterlcMoney= new Array();
    AlterlcMoney[0]="零";AlterlcMoney[1]="壹";AlterlcMoney[2]="贰";AlterlcMoney[3]="叁";AlterlcMoney[4]="肆";AlterlcMoney[5]="伍";AlterlcMoney[6]="陆";AlterlcMoney[7]="柒";AlterlcMoney[8]="捌";AlterlcMoney[9]="玖";
    for (i=1; i<=liLength; i++){
    var liTempMoney = parseFloat(lcMoney.substring(liLength-i));
    lcMoney = lcMoney.substring(0,liLength-i);
    if (i==1){lcFormat ="分" + lcFormat;}
    if (i==2){lcFormat ="角" + lcFormat;}
    if (i==3){lcFormat ="元" + lcFormat;}
    if (i==4){lcFormat ="拾" + lcFormat;}
    if (i==5){lcFormat ="佰" + lcFormat;}
    if (i==6){lcFormat ="仟" + lcFormat;}
    if (i==7){lcFormat ="万" + lcFormat;}
    if (i==8){lcFormat ="拾" + lcFormat;}
    if (i==9){lcFormat ="佰" + lcFormat;}
    if (i==10){lcFormat ="仟"+ lcFormat;}
    lcFormat = "<span class=Right>" + AlterlcMoney[liTempMoney] + "</span>" + lcFormat;
    }
    lcMoney = lcFormat;
    if (acType=="N"){
    return lcMoneyNs;
    }else{
    return lcMoney;
    }
    }
    </script>
    <BODY BGCOLOR="#FFFFFF">
    <input type="text" name="t1">
    <input type="button" value="test" onclick="doChange();">
    <div id="divid">
    </div>
    </BODY>
      

  3.   

    呵呵,这样很简单呀,例如用我后面回答的,这样就可以拉。var liMoney = "12345.45";
    alert(MoneyFormat(liMoney,liMoney.length-1)); 
      

  4.   

    <script>
    alert(Chinese("12345.45"));
    alert(Chinese("12000.45"));
    function Chinese(num){
    var arr1=new Array("仟","佰","拾","亿","仟","佰","拾","万","仟","佰","拾","元","点","角","分")
    var arr3=new Array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖")
    var point=num.indexOf(".")
    if(point<0)point=num.length
    var len=arr1.length-point-3
    var strRet="",flag=true;
    for(i=0;i<num.length;i++){
    if(i!=point){
    val=arr1[i+len]
    if(num.charAt(i)!="0")
    {strRet+=arr3[num.charAt(i)]+val;flag=true;}
    else
    if(val=="亿"||val=="万"||val=="元"||val=="分"){
    if(!flag){strRet=strRet.substr(0,strRet.length-1)+val;flag=true;}
    }else{
    if(flag){flag=false;strRet+="零";}
    }
    }
    }
    return strRet.replace("零零零","").replace("零零","零");
    }
    </script>
      

  5.   

    发现Bug.
    Chinese(200050.00)
    输出为: 贰拾零伍拾分 
      

  6.   

    看看这个? <script>
    document.write(Chinese("1.01"));
    document.write("<br>"+Chinese("10.02"));
    document.write("<br>"+Chinese("101.03"));
    document.write("<br>"+Chinese("1020.04"));
    document.write("<br>"+Chinese("10300.05"));
    document.write("<br>"+Chinese("104000.06"));
    document.write("<br>"+Chinese("1050000.07"));
    document.write("<br>"+Chinese("10600000.08"));
    document.write("<br>"+Chinese("107000000.09"));
    document.write("<br>"+Chinese("1080000000.10"));
    document.write("<br>"+Chinese("10900000000.11"));function Chinese(num){
    var arr1=new Array("仟","佰","拾","亿","仟","佰","拾","万","仟","佰","拾","元","点","角","分")
    var arr3=new Array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖")
    var point=num.indexOf(".")
    if(point<0)point=num.length
    var len=arr1.length-point-3
    var strRet="",lastChar="";
    for(i=0;i<num.length;i++){
    if(i!=point){
    val=arr1[i+len]
    if(num.charAt(i)!="0")
    strRet+=arr3[num.charAt(i)]+val;
    else{
    lastChar=strRet.substr(strRet.length-1)
    if(val=="亿"||val=="万"||val=="元"||val=="分"){
    if(lastChar=="零")strRet=strRet.substr(0,strRet.length-1);
    lastChar=strRet.substr(strRet.length-1)
    if(!((val=="万"&&lastChar=="亿")||(val=="分"&&lastChar=="角")))strRet+=val
    }else{
    if(lastChar!="零")strRet+="零";
    }
    }
    }
    }
    return strRet
    }
    </script>