/// <summary>
/// 转换成大写人民币
/// </summary>
/// <param name="myMoney"></param>
/// <returns></returns>
public static string toRmb(System.Decimal myMoney)
{
string SHUZI; //保存數字小寫
string ZIFU; //保存數字轉換后的結果
int tmp1; //臨時變量
string[] shu = new String[14];
string[] SHU1 = new String[10];
shu[13] = "仟";
shu[12] = "佰"; shu[11] = "拾"; shu[10] = "亿";
shu[9] = "仟"; shu[8] = "佰"; shu[7] = "拾";
shu[6] = "万"; shu[5] = "仟"; shu[4] = "佰";
shu[3] = "拾"; shu[2] = "元"; shu[1] = "角";
shu[0] = "分";
SHU1[0] = "零"; SHU1[1] = "壹"; SHU1[2] = "贰";
SHU1[3] = "叁"; SHU1[4] = "肆"; SHU1[5] = "伍";
SHU1[6] = "陆"; SHU1[7] = "柒"; SHU1[8] = "捌";
SHU1[9] = "玖";
bool flag;
// bool zeroFlag;
// zeroFlag=false;
//最大值為9999,9999,9999.99
if (myMoney > Convert.ToDecimal(999999999999.99))//過大時返回原來值
{
return Convert.ToString(myMoney) + "元整";
}
else if (myMoney == Convert.ToDecimal(0))
{
return "零元整";
}
else
{
flag = false;
SHUZI = Convert.ToString(myMoney * 100);//先將數值轉化
if (SHUZI.Substring(0, 1) == "-")//為負數時去掉負號
{
SHUZI = SHUZI.Substring(1);
}
if (SHUZI.IndexOf(".") > 0)//當小數位過兩位時,去掉小數位
{
SHUZI = SHUZI.Substring(0, SHUZI.IndexOf("."));
}
ZIFU = "";
tmp1 = 0; //從最首位開始轉化
while (tmp1 < SHUZI.Length)
{
if (SHUZI.Substring(tmp1, 1) != "0")//當數字位不為零時,得到當前的 漢數 和 幣字
{
if (flag)
ZIFU += "零";
ZIFU = ZIFU + SHU1[Convert.ToInt32(SHUZI.Substring(tmp1, 1))] + shu[SHUZI.Length - tmp1 - 1];
flag = false;
}
else//當數字位為零時
{
flag = true;
if (tmp1 == SHUZI.Length - 3)//最未位的單位為 元
{
ZIFU = ZIFU + shu[2];
}
if (tmp1 == SHUZI.Length - 7) //以 萬 記
{
if (ZIFU.Substring(ZIFU.Length - 1, 1) != shu[10])
{
ZIFU = ZIFU + shu[6];
flag = false;
}
}
if (tmp1 == SHUZI.Length - 11)
{
ZIFU = ZIFU + shu[10];
flag = false;
}
}
tmp1 = tmp1 + 1;
}
}
int dotIndex = myMoney.ToString().IndexOf(".");
if (dotIndex > 0) //判断是否包含小数点
{
String partStr = myMoney.ToString().Substring(dotIndex + 1);
if (partStr.TrimEnd('0').Length > 1) //如小数位数大于1(角、分),则不包含最后的“整”。
{
return ZIFU;
}
else
{
return ZIFU + "整";
}
}
else
{
return ZIFU + "整";
}
}