|  | 
| 技术资料  > ASP技术 > ASP技巧 : 一个把数字转英文的实用程序 |  | 一个把数字转英文的实用程序March 25,2004
 |  | 最近做项目的合同部分时用到需要能把数字转英文的程序,找过很多网站都没用,只能安下心来自己做,程序作的不太精简,但功能可以实现,也许同僚们会用得着。(vbscript) function zr4(y)'准备数据
 dim z(10)
 z(1)="ONE"
 z(2)="TWO"
 z(3)="THREE"
 z(4)="FOUR"
 z(5)="FIVE"
 z(6)="SIX"
 z(7)="SEVEN"
 z(8)="EIGHT"
 z(9)="NINE"
 zr4=z(MID(y,1,1))
 end function
 
 function zr3(y)'准备数据
 dim z(10)
 z(1)="ONE"
 z(2)="TWO"
 z(3)="THREE"
 z(4)="FOUR"
 z(5)="FIVE"
 z(6)="SIX"
 z(7)="SEVEN"
 z(8)="EIGHT"
 z(9)="NINE"
 zr3=z(MID(y,3,1))
 end function
 
 
 function zr2(y)'准备数据
 
 dim z(20)
 z(10)="TEN"
 z(11)="ELEVEN"
 z(12)="TWELVE"
 z(13)="THIRTEEN"
 z(14)="FOURTEEN"
 z(15)="FIFTEEN"
 z(16)="SIXTEEN"
 z(17)="SEVENTEEN"
 z(18)="EIGHTEEN"
 z(19)="NINETEEN"
 zr2=z(MID(y,2,2))
 
 end function
 
 function zr1(y)'准备数据
 
 dim z(10)
 z(1)="TEN"
 z(2)="TWENTY"
 z(3)="THIRTY"
 z(4)="FORTY"
 z(5)="FIFTY"
 z(6)="SIXTY"
 z(7)="SEVENTY"
 z(8)="EIGHTY"
 z(9)="NINETY"
 zr1=z(MID(y,2,1))
 
 end function
 
 
 function dw(y)'准备数据
 
 dim z(5)
 z(0)=""
 z(1)="THOUSAND"
 z(2)="MILLION"
 z(3)="BILLION"
 dw=z(y)
 
 end function
 
 function w2(y)'用来制作2位数字转英文
 
 if MID(y,2,1)="0" then'判断是否小于十
 value=zr3(y)
 elseif MID(y,2,1)="1" then'判断是否在十到二十之间
 value=zr2(y)
 elseif MID(y,3,1)="0" then'判断是否为大于二十小于一百的能被十整除的数(为了去掉尾空格)
 value=zr1(y)
 else
 value=zr1(y)+" "+zr3(y)'加上十位到个位的空格
 end if
 w2=value
 end function
 
 function w3(y)'用来制作3位数字转英文
 if MID(y,1,1)="0" then'判断是否小于一百
 value=w2(y)
 elseif MID(y,2,2)="00"  then'判断是否能被一百整除
 value=zr4(y)+" "+"HUNDRED"
 else
 value=zr4(y)+" "+"HUNDRED"+" "+"AND"+" "+w2(y)'不能整除的要后面加“AND”
 end if
 w3=value
 end function
 
 function make(x)
 z=instr(1,x,".",1)'取小数点位置
 if z<>0 then'判断有没有小数
 lstr=mid(x,1,z-1)'取小数点左边的字串
 rstr=mid(x,z+1,2)'取小数点右边的字串
 else
 lstr=x'没有小数的情况
 end if
 lstrev=StrReverse(lstr)'对左边的字串取反字串
 dim a(5)'定义5个字串变量用来存放解析出的三位一组的字串
 select case len(lstrev) mod 3'字串长度不能被整除,需补齐
 case "1"
 lstrev=lstrev+"00"
 case "2"
 lstrev=lstrev+"0"
 end select
 lm=""'用来存放转换后的整数部分
 for i=0 to len(lstrev)/3-1'计算有多少个三位
 a(i)=StrReverse(mid(lstrev,3*i+1,3))'截取第1个三位
 if a(i)<>"000"  then'用来避免这种情况“1000000=ONE MILLION THOUSAND ONLY”
 if i<>0 then
 lm=w3(a(i))+" "+dw(i)+" "+lm'用来加上“THOUSAND OR MILLION OR BILLION”
 else
 lm=w3(a(i))'防止i=0时“lm=w3(a(i))+" "+dw(i)+" "+lm”多加两个尾空格
 end if
 else
 lm=w3(a(i))+lm
 end if
 NEXT
 xs=""'用来存放转换后的小数部分
 if z<>0 then
 xs="AND CENTS"+" "+w2("$"+rstr)+" "'小数部分存在时转换小数部分
 end if
 make=lm+" "+xs+"ONLY"'最后结果,加上ONLY
 end function
 
 |  |