public enum Chinese_Num
{
零 = 0, 壹 = 1, 贰 = 2, 叁 = 3, 肆 = 4, 伍 = 5, 陆 = 6, 柒 = 7, 捌 = 8, 玖 = 9, 点 = 10
}
public enum Unit
{
拾 = 2, 佰 = 3, 仟 = 4, 万 = 5, 亿 = 9, 兆 = 13
}
private void button1_Click(object sender, EventArgs e)
{
string Money = textBox1.Text.Trim();
try
{
Decimal money = Convert.ToDecimal(Money);
Money = money.ToString();
MessageBox.Show(TurnIntoChinese_Num(Money));
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private string TurnIntoChinese_Num(string money)
{
StringBuilder RMB = new StringBuilder();
//判断输入是否包含小数点
if (money.Contains('.'))
{
//如果小数点前只有一位
if (money.Split('.')[0].Length > 1)
{
RMB.Append(GetInt(money.Split('.')[0]));
RMB.Append(GetOne(10) + GetFloat(money.Split('.')[1]));
}
else
{
RMB.Append(GetOne(Convert.ToInt32(money.Split('.')[0])));
RMB.Append(GetOne(10) + GetFloat(money.Split('.')[1]));
}
}
else
{
RMB.Append(GetInt(money));
}
return RMB.ToString();
}
/// <summary>
/// 转换整数部分
/// </summary>
/// <param name="money"></param>
/// <returns></returns>
private string GetInt(string money)
{
StringBuilder RMB = new StringBuilder();
int count = money.Length;
int Index = Convert.ToInt32(count / 4);
for (int i = Index; i >= 0; i--)
{
if (GetUnder_four(money.Substring(0, money.Length - 4 * i)) == "")
{
continue;
}
else
{
RMB.Append(GetUnder_four(money.Substring(0, money.Length - 4 * i)) + GetIndex(4 * i + 1));
}
}
//if (i == 0)
//{
// if (money != "0")
// {
// RMB.Append(GetUnder_four(money));
// }
// else
// {
// RMB.Append(GetOne(Convert.ToInt32(money)));
// }
//}
//else
//{
// else
// {
// RMB.Append(GetUnder_four(money.Substring(0, money.Length - 4 * i)) + GetIndex(4 * i + 1));
// }
//}
return RMB.ToString();
}
/// <summary>
/// 转换4位以下的数字
/// </summary>
/// <param name="money"></param>
/// <returns></returns>
private string GetUnder_four(string money)
{
StringBuilder RMB = new StringBuilder();
if (money.Length > 4)
money = money.Substring(money.Length - 4);
char[] numlist = money.ToCharArray();
for (int i = numlist.Length; i > 0; i--)
{
char num = numlist[numlist.Length - i];
if (num == '0')
{
if (i > 1)
{
//如果连续为零,只显示一个
if (numlist[numlist.Length - i + 1] != '0')
{
RMB.Append(GetOne(0));
}
else
continue;
}
}
else
{
RMB.Append(GetOne(Convert.ToInt16(num.ToString())) + GetIndex(i));
}
}
return RMB.ToString();
}
/// <summary>
/// 转化小数部分
/// </summary>
/// <param name="money"></param>
/// <returns></returns>
private string GetFloat(string money)
{
StringBuilder sb = new StringBuilder();
string C_num = string.Empty;
for (int i = 0; i < money.Length; i++)
{
int num = Convert.ToInt32(money.Substring(i, 1));
C_num = GetOne(num);
sb.Append(C_num);
}
return sb.ToString();
}
/// <summary>
/// 转换单个整数
/// </summary>
/// <param name="money"></param>
/// <returns></returns>
private string GetOne(int money)
{
string Chinese_Num = Enum.GetName(typeof(Chinese_Num), money);
return Chinese_Num;
}
/// <summary>
/// 转化单位
/// </summary>
/// <param name="index"></param>
/// <returns></returns>
private string GetIndex(int index)
{
string Chinese_Num = Enum.GetName(typeof(Unit), index);
return Chinese_Num;
}