【编程开发】AspAsp.NetCGIPHPJspXMLPERLC++C#VCVBDelphiPowerBuilderJAVA汇编数据库编程移动开发其它语言

您现在的位置:首页 > 网络学院 > 编程开发 > 数据库编程 > 在PB中实现数字的英文大写和中文大写

在PB中实现数字的英文大写和中文大写

来源: 作者: 日期:2006-08-14

【聚杰网数据库编程】在PB中实现数字的英文大写和中文大写


P>PowerBuilder是当前得到广泛应用的C/S数据库前端开发工具, 在使用PB的过程中,经常遇到要将数字进行英文或中文的大写转换,尤其是在处理金额的时候,本文整理了我在实践中用到的转换方法,提供给大家参考。

  一、 英文大写转换

  以下是进行英文大写转换的函数内容,函数名为dtoe:

//****** 阿拉伯数--- $#@62;英文数 ******string aa,bb,T1,T2,T3,B,W,CC,a1decimal a=0,c=0,a2INTEGER V,Maa="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 " //**** 进入时 --- $#@62; tT=round(t,2)T1=STRING(T)DO WHILE POS(T1,",")$#@60; $#@62;0 V=POS(T1,",")  T1=MID(T1,1,V - 1)+MID(T1,V+1)LOOPT2=" "T3=T1IF POS(T3,".")$#@60; $#@62;0 THEN V=POS(T3,".") T1=MID(T3,1,V - 1) T2=MID(T3,V+1)END IFT1=SPACE(10 - LEN(T1))+T1CC=T1B=" "W=" "M=9//*** 整数处理 ***do while m $#@62;0 if MID(cc,m+1,1)=" " then exit end if if INTEGER(MID(cc,m - 1,3))$#@60; $#@62;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$#@60; $#@62;0 then if a$#@60; 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$#@60; $#@62;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$#@60; $#@62;0 then b=RIGHTtrim(mid(aa,(a - 1)*9+1,9))+" HUNDRED "  if w$#@60; $#@62;" " and m=9 then b=b+"AND "  end if w=b+w  end if end if m=m - 3LOOP//*** 小数处理 ***if w=" " then w="ZERO " end ifif t2$#@60; $#@62;" " AND T2$#@60; $#@62;"00" then w=trim(w)+" & "+t2+"/100" end if//*** 结果 --- $#@62; wreturn w

  二、中文大写转换

  以下是进行中文大写转换的函数内容,函数名为dtormb:

decimal ystring je,x,hz1,hz2,e,h,f,mint b,ay=mjeX    rim(string(Y))B = len(X)-3A = 1E = mid(X,A,1)HZ2 = 零壹贰叁肆伍陆柒捌玖HZ1 = 仟佰拾亿仟佰拾万仟佰拾元JE =  do while E$#@60; $#@62;. H = mid(HZ2,integer(E)*2+1,2) F = mid(HZ1,24 - (B - A)*2 - 1,2) if E$#@60; $#@62;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+1E = 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 = 1do while A$#@60; 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+2loop return JE


评论   点击查看全部评论
您的评论参与,将为聚杰带来更大的动力!请不要吝啬!
快速回复
请使用文明语言让我们维护健康绿色网络环境!

匿名发表   验证码: