科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道应用软件在PB中实现数字的英文大写和中文大写

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

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

作者:陆建新 来源:51cto.com 2007年9月15日

关键字: 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

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章