注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

简单代码

寻找代码的灵魂

 
 
 

日志

 
 
关于我

对于本博客内所有原创文章和代码的引用必须标明“来源:http://simplesource.blog.163.com/”。如需应用于商业目的必须经本人同意,本人对所有原创文章和代码保留一切权利。 PS:需要部分程序源代码的请留下邮箱地址

大写金额转换程序  

2010-02-21 15:27:01|  分类: 我的程序 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

惭愧,大写金额不会写。网上找了大写金额的规则如下:

(一) 阿拉伯数字中间有“0”时,中文大写金额中间可以只写一个“零”字。如¥1,409.50,应写成人民币壹仟肆佰零玖元伍角。

(二) 阿拉伯数字中间连续有几个“0”,中文大写金额中间可以只写一个“零”字,如¥6,007.14,应写成人民币陆仟零柒元壹角肆分。

(三) 阿拉伯金额数字万位或元位是“0”,或者数字中间连续有几个“0”,万位、元位也是“0”,但仟位、角位不是“0”时,中文大写金额中可以只写一个零字,也可以不写“零”字,如¥1,680.32,应写成人民币壹仟陆佰捌拾元零三角贰分,或者写成人民币壹仟陆佰捌拾元三角贰分;又如¥107,000.53,应写成人民币壹拾万柒仟元零伍角叁分,或者写成人民币壹拾万柒仟元伍角叁分。

(四) 阿拉伯金额数字角位是“0”,而分位不是“0”时,中文大写金额“元”后面应写“零”字。如¥16,409.02,应写成人民币壹万陆仟肆佰零玖元零贰分;又如¥325.04,应写成人民币叁佰贰拾元零肆分。 

于是写了个小程序辅助一下,程序截图:

大写金额转换程序 - 简单代码 - 简单代码

注意:金额保留到小数点后2位;double精度限制,如果数字输入太大,将会出现舍入。

转换函数:

    CString ToBigNum(double dVal)

    {

        CString sRet = "";

        if(dVal < 0)

        {

            dVal = -dVal;

            sRet += "";

        }

        CString sNums[] =

        {

            "", "", "", "", "", "", "", "", "", ""

        };

        CString sUnit[] =

        {

            "", "", "", ""

        };

        char buffer[1024];

        sprintf(buffer, "%.2lf", dVal);

        int l = (int)strlen(buffer) - 3;

        int i;

        int z = 0, n = 0, y = 0;

        for(i = 0; i < l; i++)

        {

            if(buffer[i] == '0')

            {

                z = 1;

            }

            else

            {

                if(z == 1)

                {

                    sRet += "";

                    z = 0;

                }

                n = 1;

                y = 1;

                sRet += sNums[buffer[i] - '0'];

                sRet += sUnit[(l - i - 1) % 4];

            }

            if(0 == l - i - 1)

            {

            }

            else if(0 == (l - i - 1) % 8)

            {

                sRet += "亿";

                n = 0;

            }

            else if(0 == (l - i - 1) % 4)

            {

                if(n != 0)

                {

                    sRet += "";

                }

            }

        }

        if(y == 1)

        {

            sRet += "";

        }

        i++;

        if(buffer[i] == '0')

        {

            if(buffer[i + 1] == '0')

            {

                if(y != 1)

                {

                    sRet += "零圆";

                }

                sRet += "";

            }

            else

            {

                if(y == 1)

                {

                    sRet += "";

                }

            }

        }

        else

        {

            if(y == 1 && z == 1)

            {

                sRet += "";

            }

            sRet += sNums[buffer[i] - '0'];

            sRet += "";

        }

        if(buffer[i + 1] != '0')

        {

            sRet += sNums[buffer[i + 1] - '0'];

            sRet += "";

        }

        return sRet;

    }

 

 程序下载

大写金额转换程序.rar

 

 

 

 

 

  评论这张
 
阅读(625)| 评论(1)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018