用VisualFoxPro实现小写数字转中文大写 一起走近固态硬盘 用VisualFoxPro实现小写数字转中文大写
技术拾萃 上一版 下一版

《江苏科技报·教育周刊》(双周刊,国内统一刊号CN32-0019),是江苏省唯一以社会立场透析当代中国教育的报纸。秉承“科技推动教育,教育改变人生”的理念,《江苏科技报·教育周刊》一直注意保持与教育前沿工作的密切联系,定位于教育宏观研究,兼顾微观探讨,注重教育文化生态的构建与引导,时刻关注鲜活的教育实态,着眼于教育文化的深层构建,努力赋予教育以深厚的文化内涵,致力打造中国最好的教育媒体。

国内统一刊号:CN32—0019
编辑部地址:江苏省南京市鼓楼区中山路55号新华大厦48楼

第240期 总第4534期 2012年11月27日 星期二
返回首页
作者 内容  上一期  当前第240期  下一期
用VisualFoxPro实现小写数字转中文大写
来源:泗洪县电化教育办公室 作者:肖明华 发布日期:2012-11-27 16:54:42

     将小写数字转换为中文大写是实际工作经常遇到的问题,相对于手工而言,编程的思路要省事得多,现将用Visual FoxPro(以下简称VFP)编写的程序整理出来,供大家参考。
     1.需求分析
     在财务票据中,我们要将小写金额转换为中文大写金额,一般的要求是将给定的阿拉伯数字的金额转换成“×万×仟×佰×拾×元×角×分”的格式。
     编程转换大写金额总会有上限和下限,必须根据实际使用时金额可能出现的范围来确定这个上下限,否则就有可能在应用时金额的大小超出程序转换允许的范围,而导致程序出错。在程序中还应该先对被转换的小写金额进行判断,超出范围的不予转换,以免程序出错。
     2.编程思路
     将程序写成函数LowToUpp(n),参数n就是要转换的数值型的小写金额,返回值是转换成中文大写金额的字符串。需要时调用该函数,完成小写金额到中文大写金额的转换。
     将大写数字按“零壹贰叁肆伍陆柒捌玖”的顺序放在字符串变量c1中,每个数字k的值与对应汉字的起始字节位置的关系为2k+1。先将小写金额转换成字符串,通过循环逐个取出小写数字,根据其数值k,用SUBSTR( )函数取出相应位置上的大写数字。
     如果从后向前逐个转换小写金额字符串中的数字,金额的单位顺序则是“分角元拾佰仟万”。所以将单位按此顺序存放在字符串变量c2中,每个小写金额数字的单位起始字节位置与其倒数的位置m(也是循环次数)的对应关系为(m-1)×2+1。使用时只要根据循环次数,用SUBSTR( )函数在对应的位置上取出单位,添加在转换好的大写数字后面即可。这样也就免去了从前向后转换小写金额字符串时,要根据位数判断使用什么单位的麻烦。
     3.解决方案
     以VFP编写的转换函数代码如下:
     FUNCTION LowToUpp
     LPARAMETERS n   &&函数接收的参数(要转换的小写金额)
     IF n<0 OR n>=1000000000
     RETURN "  "   &&参数值超出范围,函数返回空串
     ENDIF
     c1 = "零壹贰叁肆伍陆柒捌玖"
     c2 = "分角元拾佰仟万拾佰仟亿"
     cn = ALLTRIM(STR(n, 12, 2))  &&将数值型小写金额转换为字符串
     cs = "  "   &&转换后的大写金额(函数返回值)
     m = 1
     FOR i=LEN(cn) TO 1 STEP -1
     k = SUBSTR(cn, i, 1)   &&取出当前要转换的小写数字
     IF k <> "."
     cs = SUBS(c1,val(k)*2+1,2)+SUBS(c2,(m-1)*2+1,2)+"  "+cs
     m = m + 1 
     ENDIF
     ENDFOR
     RETURN cs
     ENDFUNC
     为了方便引用,这里小写金额转换的范围限制为大于等于0,小于10亿。
     4.使用方法
     此函数的调用方法如下:
     WAIT LowToUpp(342016) WINDOW
     n = 847856.45
     s = LowToUpp(n)
     WAIT s WINDOW
     调用此函数时必须要有数值型的参数,否则会出错。如果调用此函数的代码与该函数代码不在一个程序文件中,可能会出现“lowtoupp.prg不存在”的错误信息。使用SET PROCEDURE TO命令打开包含有LowToUpp函数的程序文件,命令格式如下:
     SET PROCEDURE TO d:\程序1.prg ADDITIVE
     其中“d:\程序1.prg”为包含LowToUpp函数的程序文件名和路径,“ADDITIVE”指定不关闭已打开的程序文件。
     以上源代码在任意VFP版本中都可以正常运行。使用VFP来示例,主要是因为它是最容易上手的桌面数据库管理系统,可以方便未学习过编程的朋友参考。其它编程语言只要对相关命令、函数稍做修改就可以使用。

发表评论
评论标题:
评论内容:
(500字符)
验证码: 看不清楚,请点击我
    
本网站所有内容属《江苏科技报·教育周刊》所有,未经许可不得转载
编辑部地址:江苏省南京市鼓楼区中山路55号新华大厦48楼
ICP备案编号:ICP备案编号:苏ICP备05076602号