using System;

namespace JXC_MIS.MyClass
	
	{
		/// <summary>
		/// 本类实现阿拉伯数字到大写中文的转换
		/// 该类没有对非法数字进行判别
		/// 请调用NumToChn方法
		/// </summary>
		public class MoneyToCh
		{
			public MoneyToCh()
			{
				//
				// TODO: Add constructor logic here
				//
			}
			//转换数字
			private char CharToNum(char x)
			{
				string stringChnNames="零一二三四五六七八九";
				string stringNumNames="0123456789";
				return stringChnNames[stringNumNames.IndexOf(x)];
			}
			//转换万以下整数
			private string WanStrToInt(string x)
			{
				string[] stringArrayLevelNames=new string[4] {"","十","百","千"};
				string ret="";
				int i;
				for (i=x.Length-1;i>=0;i--)
					if (x[i]=='0')
						ret=CharToNum(x[i])+ret;
					else
						ret=CharToNum(x[i])+stringArrayLevelNames[x.Length-1-i]+ret;
				while ((i=ret.IndexOf("零零"))!=-1)
					ret=ret.Remove(i,1);
				if (ret[ret.Length-1]=='零' && ret.Length>1)
					ret=ret.Remove(ret.Length-1,1);
				if (ret.Length>=2 && ret.Substring(0,2)=="一十")
					ret=ret.Remove(0,1);
				return ret;
			}
			//转换整数
			private string StrToInt(string x)
			{
				int len=x.Length;
				string ret,temp;
				if (len<=4)
					ret=WanStrToInt(x);
				else if (len<=8)
				{
					ret=WanStrToInt(x.Substring(0,len-4))+"万";
					temp=WanStrToInt(x.Substring(len-4,4));
					if (temp.IndexOf("千")==-1 && temp!="")
						ret+="零"+temp;
					else
						ret+=temp;
				}
				else
				{
					ret=WanStrToInt(x.Substring(0,len-8))+"亿";
					temp=WanStrToInt(x.Substring(len-8,4));
					if (temp.IndexOf("千")==-1 && temp!="")
						ret+="零"+temp;
					else
						ret+=temp;
					ret+="万";
					temp=WanStrToInt(x.Substring(len-4,4));
					if (temp.IndexOf("千")==-1 && temp!="")
						ret+="零"+temp;
					else
						ret+=temp;
				}
				int i;
				if ((i=ret.IndexOf("零万"))!=-1)
					ret=ret.Remove(i+1,1);
				while ((i=ret.IndexOf("零零"))!=-1)
					ret=ret.Remove(i,1);
				if (ret[ret.Length-1]=='零' && ret.Length>1)
					ret=ret.Remove(ret.Length-1,1);
				return ret;
			}
//转换小数
			private string StrToDouble(string x)
			{
				string ret="";
				for (int i=0;i<x.Length;i++)
					ret+=CharToNum(x[i]);
				return ret;
			}

			public string NumToChn(string x)
			{
				if (x.Length==0)
					return "";
				string ret="";
				if (x[0]=='-')
				{
					ret="负";
					x=x.Remove(0,1);
				}
				if (x[0].ToString()==".")
					x="0"+x;
				if (x[x.Length-1].ToString()==".")
					x=x.Remove(x.Length-1,1);
				if (x.IndexOf(".")>-1)
					ret+=StrToInt(x.Substring(0,x.IndexOf(".")))+"点"+StrToDouble(x.Substring(x.IndexOf(".")+1));
				else
					ret+=StrToInt(x);
				return ret;
			}
		}
	}

////	//测试工程
////
////	using System;
////
////	namespace Money
////	{
////		/// <summary>
////		/// Summary description for Class1.
////		/// </summary>
////		class MoneyApp
////		{
////			/// <summary>
////			/// The main entry point for the application.
////			/// </summary>
////			[STAThread]
////			static void Main(string[] args)
////			{
////				//
////				// TODO: Add code to start application here
////				//
////				Money myMoney=new Money();
////				string x;
////				while (true)
////				{
////					Console.Write("X=");
////					x=Console.ReadLine();
////					if (x==") break;
////					Console.WriteLine("{0}={1}",x,myMoney.NumToChn(x));
////				}
////			}
////		}
////	}
//// 
