求小写金额转换成大写金额的函数-js

javascript:   
  
function   ChangeToBig(value)   
  
{   
  
var   intFen,i;   
  
var   strArr,strCheck,strFen,strDW,strNum,strBig,strNow;   
    
  
if(trim(value)=="")       //数据为空时返回"零"   
  return   "";   
  
if   (isNaN(value))       //数据非法时提示,并返回空串   
  {   
  strErr   
=   "数据"+value+"非法!"   
  alert(strErr);   
  
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);   
  
//其他正常情况   
  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   "";             //若失败则返回原值   
  }
   
  }
   
  

<html>   
  
<head>   
  
<meta   http-equiv="Content-Type"   content="text/html;   charset=gb2312">   
  
<meta   name="GENERATOR"   content="Microsoft   FrontPage   4.0">   
  
<meta   name="ProgId"   content="FrontPage.Editor.Document">   
  
<title>转换大写金额</title>   
  
<STYLE   type=text/css>   
  INPUT   
{ BORDER-RIGHT:   #c0d3dc   1px   solid;   BORDER-TOP:   #c0d3dc   1px   solid;   BORDER-LEFT:   #c0d3dc   1px   solid;   BORDER-BOTTOM:   #c0d3dc   1px   solid;   font-family:   verdana;   HEIGHT:   19px}   
  BODY   
{font-family:arial,helvetica,Tahoma;   font-size:   9pt;   color:'094A82'}   
  
</STYLE>   
  
<bgsound   id=bgsoundone   src=""   loop=1>   
  
</head>   
  
<body>   
  
<SCRIPT   LANGUAGE="VBScript">                           
  
dim   hj,hji   
  
sub   document_onkeypress()   
          
if   window.event.srcelement.id="num"   and   window.event.keycode="13"   then   
        
call   retu_cn()   
  
end   if   
  
end   sub   
  
sub   window_onload()   
  document.fmSubmit.t1.focus()   
  
end   sub   
  
SUB   retu_cn()   
  
dim   n,m_hj,s,ch,ch2,ch3,num   
  num
=Replace(trim(document.fmSubmit.t1.value),",","",1,-1,1)   
  
if   num=""   then   
        
MsgBox   "您还没有输入金额!"   
        document.fmSubmit.t1.focus()   
        
exit   sub   
  
End   If   
  
if   IsNumeric(num)=False   then   
        
MsgBox   "您输入的不是金额!"   
        document.fmSubmit.t1.focus()   
        
exit   sub   
  
End   If   
  n
=FormatNumber(num,2,-1)   
  num
=n   
  n
=Replace(n,",","",1,-1,1)   
  
If   len(n)>15   Then   
        
MsgBox   "金额必须小于千亿!"   
        document.fmSubmit.t1.focus()   
        
exit   sub   
  
End   If   
  hj
=space(0)   
  s
="840"   
  ch
="壹贰叁肆伍陆柒捌玖"   
  ch2
="仟佰拾     "   
  ch3
="亿万元"   
  
for   x=1   to   3   
          m
=cstr(int(n/10^FormatNumber(mid(s,x,1),0,-1)))   
          m
=space(4-len(m))+m   
          m_hj
=space(0)   
          
if   m<>"       0"   then   
                
for   y=1   to   4   
                        
if   mid(m,y,1)<>space(1)   and   mid(m,y,1)<>"0"   then   
                              m_hj
=trim(m_hj+mid(ch,FormatNumber(mid(m,y,1),0,-1),1)+mid(ch2,y,1))   
                        
else   
                              
if   mid(m,y,1)=space(1)   or   mid(m,y,1)="0"   then   
                                    m_hj
=m_hj   
                                    
if   right(m_hj,1)=""   then   
                                          m_hj
=m_hj+space(0)   
                                    
else   
                                          m_hj
=m_hj+""   
                                    
end   if   
                              
else   
                                    m_hj
=m_hj   
                              
end   if   
                        
end   if         
                
next   
                
if   right(m_hj,1)=""   then   
                      m_hj
=mid(m_hj,1,len(m_hj)-1)+mid(ch3,x,1)   
                      
if   x=3   then   
                            m_hj
=m_hj+space(0)   
                      
else   
                            m_hj
=m_hj+""   
                      
end   if   
                
else   
                      m_hj
=m_hj+mid(ch3,x,1)   
                
end   if     
                
if   right(hj,1)=""   and   mid(m_hj,1,1)=""   then   
                      hj
=hj+mid(m_hj,2,len(m_hj)-1)   
                
else   
                      hj
=hj+m_hj   
                
end   if   
          
else     
                
if   x=3   then   
                      
if   right(hj,1)=""   then   
                            
if   trim(hj)=""   then   
                                  hj
=hj+space(0)   
                            
else   
                                  hj
=mid(hj,1,len(hj)-1)+""   
                            
end   if   
                      
else   
                            
if   trim(hj)=""   then   
                                  hj
=hj+space(0)   
                            
else   
                                  hj
=hj+""   
                            
end   if   
                      
end   if   
                
else   
                      
if   right(hj,1)=""   then   
                            hj
=hj+space(0)   
                      
else   
                            hj
=hj+""   
                      
end   if         
                
end   if         
          
end   if   
          
if   n-int(n)=0   then   
                n
=n-int(FormatNumber(m,0,-1))*10^int(FormatNumber(mid(s,x,1),0,-1))   
          
else   
                tt
=FormatNumber("0."+mid(cstr(n),Instr(1,n,".")+1,2),2)   
                n
=int(n)     
                n
=n-int(FormatNumber(m,0,-1))*10^int(FormatNumber(mid(s,x,1),0,-1))   
                n
=n+tt   
          
end   if   
  
next   
      m
=mid(cstr(n),2,2)   
      
if   trim(len(m))<>2   then   
            m
=m+"0"   
      
end   if   
      
if   n*100=0   then   
            
if   left(hj,1)=""   then   
                  
if   right(hj,1)=""   then   
                        hj
=hj+"元整"   
                  
else   
                        hj
=mid(hj,2,len(hj)-1)+""   
                  
end   if   
            
else   
                  
if   right(hj,1)=""   then   
                        hj
=mid(hj,1,len(hj)-1)+""   
                  
else   
                        hj
=hj+""   
                  
end   if   
            
end   if   
      
else   
            
if   right(hj,1)=""   then   
                  hj
=mid(hj,1,len(hj)-1)   
            
else   
                  hj
=hj   
            
end   if   
            
if   mid(m,1,1)="0"   or   mid(m,1,1)=space(1)   then   
                  hj
=hj+""   
            
else   
                  hj
=hj+mid(ch,FormatNumber(mid(m,1,1),0,-1),1)+""   
            
end   if   
            
if   mid(hj,1,1)=""   then   
                  hj
=mid(hj,2,len(hj)-1)   
            
else   
                  hj
=hj   
            
end   if   
            
if   mid(m,2,1)="0"   then   
                  hj
=hj+""   
            
else   
                  hj
=hj+mid(ch,FormatNumber(mid(m,2,1),0,-1),1)+""   
            
end   if         
      
end   if   
  
if   num=".00"   then   
        document.fmSubmit.t1.value
="0.00"   
  
else   
        document.fmSubmit.t1.value
=num   
  
end   if         
  document.fmSubmit.t2.value
=""   
  hji
=1   
  
call   read()   
  
End   Sub   
  
SUB   read()   
          MyVar
=mid(hj,hji,1)   
          document.fmSubmit.t2.value
=document.fmSubmit.t2.value+MyVar   
          
Select   Case   MyVar   
                        
Case   ""           document.all("bgsoundone").src="http://go.163.com/yjsj/wav/0.wav"   
                        
Case   ""           document.all("bgsoundone").src="http://go.163.com/yjsj/wav/1.wav"   
                        
Case   ""           document.all("bgsoundone").src="http://go.163.com/yjsj/wav/2.wav"   
                        
Case   ""           document.all("bgsoundone").src="http://go.163.com/yjsj/wav/3.wav"   
                        
Case   ""           document.all("bgsoundone").src="http://go.163.com/yjsj/wav/4.wav"   
                        
Case   ""           document.all("bgsoundone").src="http://go.163.com/yjsj/wav/5.wav"   
                        
Case   ""           document.all("bgsoundone").src="http://go.163.com/yjsj/wav/6.wav"   
                        
Case   ""           document.all("bgsoundone").src="http://go.163.com/yjsj/wav/7.wav"   
                        
Case   ""           document.all("bgsoundone").src="http://go.163.com/yjsj/wav/8.wav"   
                        
Case   ""           document.all("bgsoundone").src="http://go.163.com/yjsj/wav/9.wav"   
                        
Case   ""           document.all("bgsoundone").src="http://go.163.com/yjsj/wav/10.wav"   
                        
Case   ""           document.all("bgsoundone").src="http://go.163.com/yjsj/wav/b.wav"   
                        
Case   ""           document.all("bgsoundone").src="http://go.163.com/yjsj/wav/q.wav"   
                        
Case   ""           document.all("bgsoundone").src="http://go.163.com/yjsj/wav/w.wav"   
                        
Case   "亿"           document.all("bgsoundone").src="http://go.163.com/yjsj/wav/y.wav"   
                        
Case   ""           document.all("bgsoundone").src="http://go.163.com/yjsj/wav/yuan.wav"   
                        
Case   ""           document.all("bgsoundone").src="http://go.163.com/yjsj/wav/fen.wav"   
                        
Case   ""           document.all("bgsoundone").src="http://go.163.com/yjsj/wav/jiao.wav"   
                        
Case   ""           document.all("bgsoundone").src="http://go.163.com/yjsj/wav/z.wav"   
                        
Case   else           hji=0   
                                                    document.all(
"bgsoundone").src=""   
                                                    
exit   sub   
          
End   Select   
          hji
=hji+1   
      setTimeout   
"read",400   
  
End   Sub   
  
</script>   
  最完整、最标准的大写金额转换程序,特别是“零”和“整”的转换,最大金额可到仟亿。             
  
<br>   
  并加入了朗读功能,所以说是最完美的大写金额转换程序!   
  
<br>   
  
<form   id=fmSubmit   name=fmSubmit   method="POST">   
      
<p>请输入金额:<input   type="text"   name="T1"   size="20"   id="num">     <input   type="button"   onclick=retu_cn()   value="转换大写金额"   name="B1"></p>   
      
<br>     大写金额:<input   type="text"   name="T2"   size="55"   readonly>   
  
</form>   
  
</body>   
  
</html>
posted @ 2007-07-06 10:43  Nina  阅读(1538)  评论(1编辑  收藏  举报