上次那个只能实现圆以上的转换,这次这个可以转换到角,分:
其中使用了泛型类:
public string ToChineseNumber<T>(T num)
{
string[] chinesePos = new string[] { "圆", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿" };
string[] chinese = new string[] { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
string strNum = num.ToString();//要转换数字的字符串形式
string oneNum = "";//用来存储一个数字
StringBuilder sb = new StringBuilder();//用来存储转换之后的结果
int dotPos = strNum.IndexOf(".");
string integer = "";//整数部分
if (dotPos != -1)
integer = strNum.Substring(0, dotPos);
else
integer = strNum;
//下面就可以使用integer保存的整数部分
while (integer.Length>0)
{
//转换整数部分
int len = integer.Length;//数字长度
oneNum = integer.Substring(0, 1);//取高位数字
integer = integer.Substring(1);//取出剩余数字,删掉高位数字
sb.Append(chinese[int.Parse(oneNum)]);//添加高位数字对应的大写
sb.Append(chinesePos[len - 1]);//添加数字对应的位权
}
//循环完成之后,整数部分转换完成
if (dotPos != -1)
{
//转换小数部分
string little = strNum.Substring(dotPos + 1);
if (little.Length>1)
{
sb.Append(chinese[int.Parse(little.Substring(0, 1))]);//数字
sb.Append("角");
sb.Append(chinese[int.Parse(little.Substring(1, 1))]);//数字
sb.Append("分");
}
}
return sb.ToString();
}
这也是上课老师的代码,这里只是发出来,以便别人和自己以后查找用!!!