C#金额转换成大写

方法一

            /// <summary>
/// Moneys to chinese.
/// </summary>
/// <param name="lowerMoney">要转换的金额字符数字</param>
/// <returns>string</returns>
/// <remarks></remarks>
public string MoneyToChinese(string lowerMoney)
{
string functionResultValue = null;
bool isNegative = false;//是否为负数
if (lowerMoney.Substring(0,1)=="-") //判断lowerMoney如果为负数
{
lowerMoney = lowerMoney.Trim().Remove(0, 1);
isNegative = true;
}

string strLower = null;
string strUpart = null;
string strUpper = null;
int counter = 0;

lowerMoney = Math.Round(Convert.ToDecimal(lowerMoney),2).ToString();//四舍五入保留两位小数
if (lowerMoney.IndexOf('.') > 0) //如果是小数
{

if (lowerMoney.IndexOf('.') == lowerMoney.Length - 2) //小数点后是一位
{
lowerMoney = lowerMoney + "0";//补0 590.6
}
}
else //不是小数
{
lowerMoney = lowerMoney + ".00";
}

strLower = lowerMoney;


counter = 1;
strUpper = "";

while (counter<=strLower.Length)
{
//从金额的最后一位开始截取
switch (strLower.Substring(strLower.Length-counter,1))
{
case".":
strUpart = "圆";
break;
case"0":
strUpart = "零";
break;
case"1":
strUpart = "壹";
break;
case"2":
strUpart="贰";
break;
case "3":
strUpart = "参";
break;
case "4":
strUpart = "肆";
break;
case "5":
strUpart = "伍";
break;
case "6":
strUpart = "陆";
break;
case "7":
strUpart = "柒";
break;
case "8":
strUpart = "捌";
break;
case "9":
strUpart = "玖";
break;
default:
break;

}

switch (counter)
{
case 1:
strUpart = strUpart + "分";
break;
case 2:
strUpart = strUpart + "角";
break;
case 3:
strUpart = strUpart + "";
break;
case 4:
strUpart = strUpart + "";
break;
case 5:
strUpart = strUpart + "拾";
break;
case 6:
strUpart = strUpart + "佰";
break;
case 7:
strUpart = strUpart + "仟";
break;
case 8:
strUpart = strUpart + "万";
break;
case 9:
strUpart = strUpart + "拾";
break;
case 10:
strUpart = strUpart + "佰";
break;
case 11:
strUpart = strUpart + "仟";
break;
case 12:
strUpart = strUpart + "亿";
break;
case 13:
strUpart = strUpart + "拾";
break;
case 14:
strUpart = strUpart + "佰";
break;
case 15:
strUpart = strUpart + "仟";
break;
case 16:
strUpart = strUpart + "万";
break;
default:
strUpart = strUpart + "";
break;

}

strUpper = strUpart + strUpper;
counter = counter + 1;
}

//特殊处理

strUpper = strUpper.Replace("零拾", "零");
strUpper = strUpper.Replace("零佰", "零");
strUpper = strUpper.Replace("零仟", "零");
strUpper = strUpper.Replace("零零零", "零");
strUpper = strUpper.Replace("零零", "零");
strUpper = strUpper.Replace("零角零分", "整");
strUpper = strUpper.Replace("零分", "整");
strUpper = strUpper.Replace("零角", "零");
strUpper = strUpper.Replace("零亿零万零圆", "亿圆");
strUpper = strUpper.Replace("零亿零万", "亿");
strUpper = strUpper.Replace("零万零圆", "万圆");
strUpper = strUpper.Replace("万零圆", "万圆");
strUpper = strUpper.Replace("零亿", "亿");
strUpper = strUpper.Replace("零万", "万");
strUpper = strUpper.Replace("零圆", "圆");
//return strUpper;
//对壹圆以下金额的处理
if (strUpper.Substring(0,1)=="圆")
{
strUpper = strUpper.Substring(1, strUpper.Length - 1);
}
if (strUpper.Substring(0, 1) == "零")
{
strUpper = strUpper.Substring(1, strUpper.Length - 1);
}
if (strUpper.Substring(0, 1) == "角")
{
strUpper = strUpper.Substring(1, strUpper.Length - 1);
}
if (strUpper.Substring(0, 1) == "分")
{
strUpper = strUpper.Substring(1, strUpper.Length - 1);
}
if (strUpper.Substring(0, 1) == "整")
{
strUpper = "零圆整";
}
functionResultValue = strUpper;
return functionResultValue;
}



方法二

/// <summary>
/// 大写金额函数
/// </summary>
/// <param name="str">金额</param>
/// <param name="nflag">0或1</param>
private static void BigWrite(string str, int nflag)
{
try
{
if (str == null || str == "")
return;
string numList = "零壹贰叁肆伍陆柒捌玖";
string rmbList = "分角元拾佰仟万拾佰仟亿拾佰仟万";
double number = 0;
string tempOutString = null;

number = double.Parse(str);

if (number > 9999999999.99)
MessageBox.Show("超出范围的人民币值", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);

//将小数转化为整数字符串
string tempNumberString = Convert.ToInt64(number * 100).ToString();
int tempNmberLength = tempNumberString.Length;
int i = 0;
while (i < tempNmberLength)
{
int oneNumber = Int32.Parse(tempNumberString.Substring(i, 1));
string oneNumberChar = numList.Substring(oneNumber, 1);
string oneNumberUnit = rmbList.Substring(tempNmberLength - i - 1, 1);
if (oneNumberChar != "零")
tempOutString += oneNumberChar + oneNumberUnit;
else
{
if (oneNumberUnit == "亿" || oneNumberUnit == "万" || oneNumberUnit == "元" || oneNumberUnit == "零")
{
while (tempOutString.EndsWith("零"))
{
tempOutString = tempOutString.Substring(0, tempOutString.Length - 1);
}
}
if (oneNumberUnit == "亿" || (oneNumberUnit == "万" && !tempOutString.EndsWith("亿")) || oneNumberUnit == "元")
{
tempOutString += oneNumberUnit;
}
else
{
bool tempEnd = tempOutString.EndsWith("亿");
bool zeroEnd = tempOutString.EndsWith("零");
if (tempOutString.Length > 1)
{
bool zeroStart = tempOutString.Substring(tempOutString.Length - 2, 2).StartsWith("零");
if (!zeroEnd && (zeroStart || !tempEnd))
tempOutString += oneNumberChar;
}
else
{
if (!zeroEnd && !tempEnd)
tempOutString += oneNumberChar;
}
}
}
i += 1;
}
while (tempOutString.EndsWith("零"))
{
tempOutString = tempOutString.Substring(0, tempOutString.Length - 1);
//贰佰贰拾叁元肆角伍分

}
while (tempOutString.EndsWith("元"))
{
tempOutString = tempOutString + "整";
}
if (nflag == 0)
{
//this.m_GetInterfaceData.SetFieldValue("Finance_PReceipt.Capitalization", tempOutString);
MessageBox.Show(tempOutString=tempOutString.Replace("元","美元").Replace("分","美分").Replace("角",""));
}


}
catch (Exception e_edit)
{
MessageBox.Show(e_edit.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值