为什么80%的码农都做不了架构师?>>>
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace AmountOfConversion
{
///
/// 金額轉換
///
public class Program
{
static void Main(string[] args)
{
string cash = Console.ReadLine();
Console.WriteLine(new Amount().CmycurD(cash));
Console.ReadKey();
}
}
public class Amount
{
private static String[] ChinaNum = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖", "拾" };
private static String[] unitI = { "元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "万" };
private static String[] unitII = { "", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "万" };
private static String[] unitIII = { "角", "分" };
///
/// 转换人民币大小金额
///
/// 金额
///
public string CmycurD(decimal num)
{
Boolean hasPoint = false;
bool isInt = true;
string strNum;//整个数字字符串
string strNumInt;//整数部分
string strNumPoint = "";//小数部分
string result = "";//返回的字符串
num = Math.Round(num, 2);//四舍五入取两位
//各种非正常情况处理
if (num <0)
throw new Exception("不转换欠条");
else if (num > Convert.ToDecimal(9999999999999.99))
throw new Exception("很难想象谁会有这么多钱&#xff01;");
else if (num &#61;&#61; 0)
return ChinaNum[0];
//***************************************************************
strNum &#61; num.ToString();
//分开整数与小数处理
if (strNum.Contains("."))
{
int pointIndex &#61; strNum.IndexOf(".");
strNumInt &#61; strNum.Substring(0, pointIndex);
strNumPoint &#61; strNum.Substring(pointIndex &#43; 1);
hasPoint &#61; true;
isInt &#61; false;
}
else
{
strNumInt &#61; strNum;
strNumPoint &#61; String.Empty;
hasPoint &#61; false;
}
//整数部分处理
if (Convert.ToInt32(strNumInt) > 0)
{
strNumInt &#61; Reverse(strNumInt);
for (int i &#61; 0; i
string strChar &#61; strNumInt.Substring(i, 1);
if (int.Parse(strChar) !&#61; 0)
result &#61; ChinaNum[int.Parse(strChar)] &#43; unitI[i] &#43; result;
else if (i &#61;&#61; 0 || i &#61;&#61; 4 || i &#61;&#61; 8)
{
if (strNumInt.Length > 8 && i &#61;&#61; 4)
continue;
result &#61; unitI[i] &#43; result;
}
else if (int.Parse(strNumInt.Substring(i - 1, 1)) !&#61; 0)
result &#61; ChinaNum[int.Parse(strChar)] &#43; result;
}
if (!hasPoint)
return result &#43; "整";
}
//小数部分处理
if (Convert.ToInt32(strNumInt) > 0)
{
for (int i &#61; 0; i
string strChar &#61; strNumPoint.Substring(i, 1);
if (int.Parse(strChar) !&#61; 0)
result &#43;&#61; ChinaNum[int.Parse(strChar)] &#43; unitIII[i];
else if (i !&#61; 1 && isInt)
result &#43;&#61; ChinaNum[int.Parse(strChar)];
}
}
return result;
}
///
/// 一个重载&#xff0c;将字符串先转换成数字在调用CmycurD(decimal num)
///
/// 用户输入的金额&#xff0c;字符串形式未转成decimal
///
public string CmycurD(string numstr)
{
try
{
decimal num &#61; Convert.ToDecimal(numstr);
return CmycurD(num);
}
catch (Exception ex)
{
return ex.Message;
}
}
///
/// 反转字符串
///
///
///
public string Reverse(string str)
{
string strReturn &#61; "";
foreach (char c in str)
{
strReturn &#61; c &#43; strReturn;
}
return strReturn;
}
}
}