阅 读 文 章

求小写的金额转成大写金额的程式~

[来源:网上转载 (http://www.chinaunix.net) | 作者:网友(sater84) | 时间:2007-05-27 | 浏览:人次 ]


请高手给发一个把   小写的金额转成大写金额的程式,非常感谢

如:小写金额为 8888.88
转化为  大写 捌仟捌百捌十捌点捌捌元

谢谢大侠~



 qingzhou 回复于:2007-01-02 15:14:04

参考以下帖子应该可以得到启发:
http://bbs.chinaunix.net/viewthread.php?tid=765079&extra=&page=1


 qingzhou 回复于:2007-01-02 15:21:55

(转)小写金额转换为大写金额(C实现)

  大多的算法都是直接分析字符串生成大写金额,即存在一个假设:源字符串的格式是正确的。在我的过程中,用状态机的方法分析源字符串,错误时,返回空指针(我可不敢保证传给我的过程的都是##.##)。 分析出源字符串中整数部有多少个数字,是否有小数,统计结果放在一个结构体中,整数和小数部分的数字分别放在两个整形数组里。

  有了统计数据就可以生成大写金额了。转换过程有个难点:要区分万、亿等“段”,特别是个位这个“段”,这个概念是在《小写转大写金额在C++中的实现》文章中提到的。在下面的程序中用j=(size-i-1)&0x3,实际上是j=(size-i-1)%4取模,j==0时为段尾,需要特殊处理。所有的处理都是围绕0来进行的,也就是说,0才是难点。

  特殊位置的0,按段分,段中第一个非0数字前的0,可能有多个;段中两个非0数字间的0;段尾的0;个位的0;十分位,角位置的0。

  另外,转换的一个重点是大写金额的写法,好像大多的算法都注重转换过程而对这个问题没有深究。我在文章后面附上转换规则。

  有一点,从低耦合的角度说,这个过程应该再细分一下。输入可以是标准格式的字符串或数字,验证的过程可以放到另一个模块中。我就不再分了,总体上,while语句整体是格式分析过程,可以单独拿出来。后面的代码是生成大写读法。需要的自己处理下吧,很简单。

下面是代码

/**
 * @brief 将源字符串中的小写金额转换为大写格式
 *
 * @param dest 目的字符串
 * @param src  小写金额字符串
 * @return 
 * - NULL 源字符串的格式错误,返回NULL
 * - 非NULL 目的字符串的首地址
 * @note 转换根据:中国人民银行会计司编写的最新《企业、银行正确办理支付结算
 *       指南》的第114页-第115页
 */
char* chineseFee( char* dest, char* src )
{
    enum
    {
        START,                 //开始
        MINUS,                 //负号
        ZEROINT,               //0整数
        INTEGER,               //整数
        DECIMAL,               //小数点
        DECIMALfRACTION,       //小数位
论坛热门帖子: [lch203] 写得蛮好的linux学习笔记(10-21)
[黑马制造] 学习java的30个目标(10-19)
[笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19)
[udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18)
[沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18)
TAG标签: 金额 J:2 ADD2TOJ TOMIDSTR MOVEMIDDATA MOVEZHONWENTOMIDSTR

最新评论 共有0位网友发表了评论

发表评论

评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名:(注册)
密码:
验证码:
匿名发表

网站地图友情连接交流论坛网站投稿广告服务联系我们留言本站长统计
Some rights reserved: www.chmhome.com, 鄂ICP备07010232号 E-mail:chinakafei@live.com,QQ:552766
中国咖啡技术网(Chmhome):国外编程技术书籍,中文编程手册,经典编程文章,交流技术,技术软件下载,计算机论文,毕业论文.