利用创建型工厂方法模式编写小写数字金额转换为人民币大写C#代码。

/*
 * 功能描述:利用创建型工厂方法模式小写数字金额转换为人民币大写。
 * 设计思想:利用创建型工厂方法模式。
 * 编程语言:c#.
 * 调用说明:
 * 在需要调用的程序开头
 * using NSNumTranslateFactory
 * using NSNumToCht;//用于转换成繁体
   using NSNumToChs;//用于转换成简体
 * 调用处如下:
 * NumToCht num1 = new NumToCht();//要转换成繁体就new 一个繁体
 * NumToChs num2 = new NumToChs();//要转换成简体就new 一个简体
 *
 * System.Console.WriteLine(num1.GetTransResult(407209806.2675, 3));//GetTransResult(double Num,int DeciCount)为公布之接口。
 * 本程序作者:冯鹏飞  -兰鹏电脑软件开发部总工程师。
 * 第一次编写和修改时间:2007-04-26
 * 第一次出现在网上时间和网站:2007-04-27 兰鹏电脑
http://www.lanpeng.net.cn
 * 与作者联系:andyfpf@gmail.com
 * MSN:andyfpf@gmail.com
 * skype:andyfpf
 * QQ:25063861
 * 本作者将帅先并长期无私贡献自已的源代码。目的在于开源和促进整个IT行业的和谐发展。请广为传播。
 * 郑重声明:凡是出自本作者冯鹏飞的源代码均为本作者冯鹏飞多年的IT行业汗水结晶。
 * 未经本作者冯鹏飞同意 严禁用于商业目的。并在程序使用处保留此注释,并注明作者信息和出处。
 * 违者必究其版权责任。
 * 欢迎与作者联系和交流。
 * */
using NSNumTranslateFactory;
namespace NSNumToChs
{
    public class NumToChs : NumTranslateFactory
    {
        private string StIntUnit = "萬千佰拾億千佰拾萬千佰拾元角分厘毫";
      
        private string StCht = "零壹貳參肆伍陸柒捌玫";
      
        public override string GetTransResult(double Num, int DigCount)
        {
           
            int NumLen;
            string StIntResult = "", StActuUnit = "";
         
            Num = System.Math.Round(Num, DigCount);
            Num = Num * System.Math.Pow(10, DigCount);
            string StNum = Num.ToString();
            NumLen = Num.ToString().Length;
            StActuUnit = StIntUnit.Substring(12+DigCount - NumLen + 1, NumLen);
            for (int i = 0; i < NumLen; i++)//connect the stnumtemp and stint
            {
                StIntResult = StIntResult + StCht[StNum[i] - 48] + StActuUnit[i];

            }
            StIntResult = StIntResult.Replace("零拾", "零");

            StIntResult = StIntResult.Replace("零佰", "零");
            StIntResult = StIntResult.Replace("零千", "零");


            StIntResult = StIntResult.Replace("零角", "零");
            StIntResult = StIntResult.Replace("零分", "零");
            StIntResult = StIntResult.Replace("零厘", "零");
            StIntResult = StIntResult.Replace("零毫", "零");

           

            StIntResult = StIntResult.Replace("零零零", "零");
            StIntResult = StIntResult.Replace("零零", "零");

           StIntResult = StIntResult.Replace("零萬", "萬");
            StIntResult = StIntResult.Replace("零億", "億");
            StIntResult = StIntResult.Replace("零元", "元");
            if (StIntResult[StIntResult.Length-1]=='零')
            {
               StIntResult = StIntResult.Substring(0, StIntResult.Length - 1);
               
            }
            return StIntResult;
        }

    }
}

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值