|
导读无锡市房产管理局产权监理处 陆建新 ---- PowerBuilder是当前得到广泛应用的C/S数据库前端开发工具, 在使用PB的过程中,经常遇到要将数字进行英文或中文的大写转换,尤其是在处理金额的... 无锡市房产管理局产权监理处 陆建新---- PowerBuilder是当前得到广泛应用的C/S数据库前端开发工具, 在使用PB的过程中,经常遇到要将数字进行英文或中文的大写转换,尤其是在处理金额的时候,本文整理了我在实践中用到的转换方法,提供给大家参考。 ---- 一、 英文大写转换 ---- 以下是进行英文大写转换的函数内容,函数名为dtoe: //****** 阿拉伯数--- >英文数 ****** string aa,bb,T1,T2,T3,B,W,CC,a1 decimal a=0,c=0,a2 INTEGER V,M aa="ONE TWO THREE FOUR FIVE SIX SEVEN "+& "EIGHT NINE TEN ELEVEN TWELVE THIRTEEN FOURTEEN FIFTEEN "+& "SIXTEEN SEVENTEENEIGHTEEN NINETEEN " bb="TWENTY THIRTY FORTY FIFTY SIXTY SEVENTYEIGHTY NINETY " //**** 进入时 --- > t T=round(t,2) T1=STRING(T) DO WHILE POS(T1,",")< >0 V=POS(T1,",") T1=MID(T1,1,V - 1)+MID(T1,V+1) LOOP T2=" " T3=T1 IF POS(T3,".")< >0 THEN V=POS(T3,".") T1=MID(T3,1,V - 1) T2=MID(T3,V+1) END IF T1=SPACE(10 - LEN(T1))+T1 CC=T1 B=" " W=" " M=9 //*** 整数处理 *** do while m >0 if MID(cc,m+1,1)=" " then exit end if if INTEGER(MID(cc,m - 1,3))< >0 then if m=6 then W=" THOUSAND "+w else if m=3 then W=" MILLION "+w end if end if A=INTEGER(MID(cc,m,2)) //*** 小于 100 的数 *** if a< >0 then if a< 20 then B=RIGHTtrim(MID(aa,(a - 1)*9+1,9)) else A1=STRING(a,'00') A2=INTEGER(MID(a1,1,1)) b=RIGHTtrim(mid(bb,(a2 - 2)*7+1,7)) a2=INTEGER(MID(a1,2,1)) if a2< >0 then B=RIGHTtrim(b+"-"+MID(aa,(a2 - 1)*9+1,9)) end if end if W=b+w end if A=INTEGER(MID(cc,m - 1,1)) //*** 100--999 的数 *** if a< >0 then b=RIGHTtrim(mid(aa,(a - 1)*9+1,9))+" HUNDRED " if w< >" " and m=9 then b=b+"AND " end if w=b+w end if end if m=m - 3 LOOP //*** 小数处理 *** if w=" " then w="ZERO " end if if t2< >" " AND T2< >"00" then w=trim(w)+" & "+t2+"/100" end if //*** 结果 --- > w return w ---- 二、中文大写转换 ---- 以下是进行中文大写转换的函数内容,函数名为dtormb: decimal y string je,x,hz1,hz2,e,h,f,m int b,a y=mje X = trim(string(Y)) B = len(X)-3 A = 1 E = mid(X,A,1) HZ2 = '零壹贰叁肆伍陆柒捌玖' HZ1 = '仟佰拾亿仟佰拾万仟佰拾元' JE = ' ' do while E< >'.' H = mid(HZ2,integer(E)*2+1,2) F = mid(HZ1,24 - (B - A)*2 - 1,2) if E< >'0' or (E='0' and (F='亿' or F='万' or F='元')) then JE = trim(JE)+H+F else JE = trim(JE)+H end if A = A+1 E = mid(X,A,1) loop A = A+1 E = mid(X,A,1) H = mid(X,A+1,1) if E='0' and H='0' then JE = JE+'整' else if E='0' then JE = JE+'零'+mid(HZ2,integer(H)*2+1,2)+'分' else if H='0' then JE = JE+mid(HZ2,integer(E)*2+1,2)+'角整' else JE = JE+mid(HZ2,integer(E)*2+1,2) +'角'+mid(HZ2,integer(H)*2+1,2)+'分' end if end if end if B = len(JE) A = 1 do while A< B M = mid(JE,A,4) if M='零元' or M='零万' or M='零亿' or M='零零' then JE = mid(JE,1,A - 1)+trim(mid(JE,A+2,40)) A = A - 2 B = B - 2 end if A = A+2 loop return JE |
温馨提示:喜欢本站的话,请收藏一下本站!