/// <summary>
/// 描述:将输入的数字的人民币金额大写
/// </summary>
/// <param name="amount">string 数字金额的字符串</param>
/// <returns>string 返回大写后的金额</returns>
public static string ConvertToUpperMoney(string amount)
{
string SM = "零壹贰叁肆伍陆柒捌玖";//要用到的数字
string DW = "分角元拾佰仟万拾佰仟亿拾佰仟万";//要用到的单位
string DXJE;//要返回的大写金额
if (9999999999999.99 < Double.Parse(amount))
{
DXJE = "数字超出人民币的范围";
}
//>>如果输入的数字符合条件
else
{
if (-1 == amount.IndexOf("."))
{
amount = amount + "00";
}
//>>如果输入的数字中含有小数点
else
{
string XSBF = amount.Split(new char[] { '.' }, 2)[1];//小数部分
if (0 == XSBF.Length)//如果没有小数位,补齐两位小数
{
amount = amount + "00";
}
else if (1 == XSBF.Length)//如果小数位只一位
{
amount = amount + "0";
}
//>>如果小数位大于3位,四舍五入
else if (XSBF.Length > 2)
{
double dje = Double.Parse(amount);
//>>如果小数部分的第三位大于5
if (Int32.Parse(XSBF.Substring(2, 1)) >= 5)
{
dje = dje + 0.01;
amount = dje.ToString();
}
//>>如果小数部分的第三位大于5
amount = amount.Substring(0, amount.Length - (XSBF.Length - 2));//将原数舍掉后面的部分只保留两位小数
}
//>>如果小数位大于3位,四舍五入
}
//>>如果输入的数字中含有小数点
amount = amount.Replace(".", "");//去掉小数点
DXJE = "整";
int dw;//单位的索引
int shu;//数的索引
//>>开始从金额的最后一位开始大写
for (shu = amount.Length - 1, dw = 0; shu >= 0; shu--, dw++)
{
int w = Int32.Parse(amount.Substring(shu, 1));//输入数字的第shu位
DXJE = DW.Substring(dw, 1) + DXJE;
DXJE = SM.Substring(w, 1) + DXJE;
}
//>>开始从金额的最后一位开始大写
}
//>>如果输入的数字符合条件
if (DXJE.Substring(0, 1) == "元")
{
DXJE = DXJE.Substring(1, DXJE.Length - 1);
}
return DXJE;
}