转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件使用 >> 常用软件 >> 正文
在PB中实现数字的英文大写和中文大写         

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

作者:闵涛 文章来源:闵涛的学习笔记 点击数:658 更新时间:2009/4/24 21:42:58
PowerBuilder是当前得到广泛应用的C/S数据库前端开发工具, 在使用PB的过程中,经常遇到要将数字进行英文或中文的大写转换,尤其是在处理金额的时候,本文整理了我在实践中用到的转换方法,提供给大家参考。

  一、 英文大写转换

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

//****** 阿拉伯数--- $#@62;英文数 ******
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 " 

//**** 进入时 --- $#@62; t
T=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)
LOOP
T2=" "
T3=T1
IF POS(T3,".")$#@60; $#@62;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 $#@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 - 3
LOOP
//*** 小数处理 ***
if w=" " then
 w="ZERO " 
end if
if t2$#@60; $#@62;" " AND T2$#@60; $#@62;"00" then
 w=trim(w)+" & "+t2+"/100" 
end if
//*** 结果 --- $#@62; w
return w

  二、中文大写转换

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

decimal y
string je,x,hz1,hz2,e,h,f,m
int b,a
y=mje
X    rim(string(Y))
B = len(X)-3
A = 1
E = 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+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$#@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+2
loop 
return JE


[办公软件]在sybase中插入图片、PDF、文本文件  [办公软件]安装Sybase ASE
[办公软件]linux指令大全(完整篇)  [办公软件]Linux新手入门常用命令大全
[办公软件]在RedHat Linux 9里安装gaim0.80  [办公软件]浅谈Linux 下Java 1.5 汉字方块问题解决方法
[办公软件]Linux程序员必读:中文化与GB18030标准  [办公软件]linux指令大全
[办公软件]制作Linux启动盘的四种方法  [办公软件]Linux文件系统的反删除方法
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · 办公软件  · 系统软件
    · 常用软件  · 聊天工具
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台