asp.net小写金额转中文大写

发布时间:2020-04-23编辑:脚本学堂
asp.net实现小写金额转中文大写的代码,将小写的阿拉伯数字金额,转成中文大写,整数支持到万亿,小数部分支持到分。

功能:
将小写的阿拉伯数字金额,转成中文大写,便于开发某些账单式页面时使用。

代码:
 

复制代码 代码示例:

private static String[] DX_Num = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
private static String[] DX_Yuan = { "元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "万" };
private static String[] DW_X = { "角", "分" };

/// <summary>
/// 金额小写转中文大写。
/// 整数支持到万亿;小数部分支持到分(超过两位将进行Banker舍入法处理)
/// </summary> www.jb200.com
/// <param name="Num">需要转换的双精度浮点数</param>
/// <returns>转换后的字符串</returns>
public static String NumGetStr(Double Num)
{
string NumStr;//整个数字字符串
string NumStr_Zh;//整数部分
string NumSr_X = "";//小数部分
string NumStr_DQ;//当前的数字字符
string NumStr_R = "";//返回的字符串

Num = Math.Round(Num, 2);//四舍五入取两位
//各种非正常情况处理
if (Num < 0)
return "转换失败";
else if (Num > 9999999999999.99)
return "金额过大,无法转换";
else if (Num == 0)
return DX_Num[0] + DX_Yuan[0];
else
{
NumStr = Num.ToString();
//分开整数与小数处理
if (NumStr.IndexOf(".") != -1)
{
NumStr_Zh = NumStr.Substring(0, NumStr.IndexOf("."));
NumSr_X = NumStr.Substring(NumStr.IndexOf(".") + 1);
}
else
{
NumStr_Zh = NumStr;
}
//判断是否有整数部分
if (int.Parse(NumStr_Zh) > 0)
{
int len = NumStr_Zh.Length - 1;
//整数部分转换
for (int a = 0; a <= len; a++)
{
NumStr_DQ = NumStr_Zh.Substring(a, 1);
if (int.Parse(NumStr_DQ) != 0)
{
NumStr_R += DX_Num[int.Parse(NumStr_DQ)] + DX_Yuan[len - a];
}
else
{
if ((len - a) == 0 || (len - a) == 4 || (len - a) == 8)
NumStr_R += DX_Yuan[len - a];
if ((a + 1) <= len)
{
NumStr_DQ = NumStr_Zh.Substring((a + 1), 1);
if (int.Parse(NumStr_DQ) == 0)
continue;
else
NumStr_R += DX_Num[0];
}
}
}
}
//判断是否含有小数部分
if (NumSr_X != "" && int.Parse(NumSr_X) > 0)
{
//小数部分转换
for (int b = 0; b < NumSr_X.Length; b++)
{
NumStr_DQ = NumSr_X.Substring(b, 1);
if (int.Parse(NumStr_DQ) != 0)
NumStr_R += DX_Num[int.Parse(NumStr_DQ)] + DW_X[b];
else
{
if ((b + 1) < NumSr_X.Length)
{
NumStr_DQ = NumSr_X.Substring((b + 1), 1);
if (int.Parse(NumStr_DQ) == 0)
continue;
}
if (b != (NumSr_X.Length - 1))
NumStr_R += DX_Num[0];
}
}
}
else
{
NumStr_R += "整";
}
return NumStr_R;
}
}