/*
* 功能描述:利用创建型工厂方法模式小写数字金额转换为人民币大写。
* 设计思想:利用创建型工厂方法模式。
* 编程语言: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;
}
}
}