//名称:ConvertSignCap
//参数:number
//返回:CapNumber
//描述:将传入的单个数字转换成中文大写形式
//创建人:刘权 2004-11-16
public static string ConvertSignCap(int SignNumber)
{
string CapNumber="";
switch(SignNumber)
{
case 0:
CapNumber = "零";
break;
case 1:
CapNumber = "壹";
break;
case 2:
CapNumber = "贰";
break;
case 3:
CapNumber = "叁";
break;
case 4:
CapNumber = "肆";
break;
case 5:
CapNumber = "伍";
break;
case 6:
CapNumber = "陆";
break;
case 7:
CapNumber = "柒";
break;
case 8:
CapNumber = "捌";
break;
case 9:
CapNumber = "玖";
break;
}
return CapNumber;
}
//名称:Symbol
//参数:NumLen,i
//返回:SymbolStr
//描述:根据传入的数值长度以及循环位数,返回其标识位
//创建人:刘权 2004-11-16
public static string Symbol(int NumLen,int i)
{
string SymbolStr = "";
switch(NumLen)
{
case 1:
SymbolStr="";
break;
case 2:
switch(i)
{
case 0:
SymbolStr="拾";
break;
case 1:
SymbolStr="";
break;
}
break;
case 3:
switch(i)
{
case 0:
SymbolStr="佰";
break;
case 1:
SymbolStr="拾";
break;
case 2:
SymbolStr="";
break;
}
break;
case 4:
switch(i)
{
case 0:
SymbolStr="仟";
break;
case 1:
SymbolStr="佰";
break;
case 2:
SymbolStr="拾";
break;
case 3:
SymbolStr="";
break;
}
break;
}
return SymbolStr;
}
//名称:ConvertToCap
//参数:number
//返回:CapNumber
//描述:将传入的金额转换(小数点后面保留2位小数)成中文大写形式
//创建人:刘权 2004-11-16
public static string ConvertToCap(double Number)
{
string NumberStr = Number.ToString();
if(NumberStr.IndexOf(".") <= 0)
{
NumberStr = NumberStr + ".00";
}
string CapStr = "";
string PartStr1 = "";
string PartStr2 = "";
string[] NumArr = NumberStr.Split('.');
//整数部分
string FNumber = NumArr[0].ToString();
//小数部分
string SNumber = NumArr[1].ToString();
if(FNumber.Length > 12)
{
//不计算大于1兆的金额。
CapStr = "数值太大,不能计算...";
}
else
{
//-------1:转换整数部分。
int FNumberLen = FNumber.Length;
//万位之内
if(FNumberLen < 5)
{
string IStr1 = "";
for(int i = 0;i < FNumberLen;i++)
{
IStr1 = ConvertSignCap(int.Parse(FNumber.Substring(i,1))) + Symbol(FNumberLen,i);
PartStr1 = PartStr1==""?IStr1:PartStr1 + IStr1;
}
}
//亿位之内
if(FNumberLen > 4 && FNumberLen < 9)
{
string TempStr1 = "";
string TempStr2 = "";
string IStr1 = "";
string IStr2 = "";
//将值分割成两部分:未超出万位的;超过万位
string Part1 = FNumber.Substring(FNumberLen-4,4);
string Part2 = FNumber.Substring(0,FNumberLen-4);
for(int i = 0;i < Part1.Length;i++)
{
IStr1 = ConvertSignCap(int.Parse(Part1.Substring(i,1))) + Symbol(Part1.Length,i);
TempStr1 = TempStr1==""?IStr1:(TempStr1 + IStr1);
}
for(int i = 0;i < Part2.Length;i++)
{
IStr2 = ConvertSignCap(int.Parse(Part2.Substring(i,1))) + Symbol(Part2.Length,i);
TempStr2 = TempStr2==""?IStr2:(TempStr2 + IStr2);
}
PartStr1 = TempStr2 + "万" + TempStr1;
}
//兆位之内
if(FNumberLen > 8 && FNumberLen < 13)
{
string TempStr1 = "";
string TempStr2 = "";
string TempStr3 = "";
string IStr1 = "";
string IStr2 = "";
string IStr3 = "";
//将值分割成三部分:未超出万位的;超过万位;超出亿位的
string Part1 = FNumber.Substring(FNumberLen-4,4);
string Part2 = FNumber.Substring(FNumberLen-8,4);
string Part3 = FNumber.Substring(0,FNumberLen-8);
for(int i = 0;i < Part1.Length;i++)
{
IStr1 = ConvertSignCap(int.Parse(Part1.Substring(i,1))) + Symbol(Part1.Length,i);
TempStr1 = TempStr1==""?IStr1:(TempStr1 + IStr1);
}
for(int i = 0;i < Part2.Length;i++)
{
IStr2 = ConvertSignCap(int.Parse(Part2.Substring(i,1))) + Symbol(Part2.Length,i);
TempStr2 = TempStr2==""?IStr2:(TempStr2 + IStr2);
}
for(int i = 0;i < Part3.Length;i++)
{
IStr3 = ConvertSignCap(int.Parse(Part3.Substring(i,1))) + Symbol(Part3.Length,i);
TempStr3 = TempStr3==""?IStr3:(TempStr3 + IStr3);
}
PartStr1 = TempStr3 + "亿" + TempStr2 + "万" + TempStr1;
}
//-------2:转换小数部分
int SNumberLen = SNumber.Length;
string IStr = "";
for(int j = 0;j < SNumberLen;j++)
{
string SymbolStr = j==0?"角":"分";
IStr = ConvertSignCap(int.Parse(SNumber.Substring(j,1))) + SymbolStr;
PartStr2 = PartStr2==""?IStr:(PartStr2 + IStr);
}
//将整数部分和小数部分结合
CapStr = PartStr1 + "元" + PartStr2;
}
// CapStr = CapStr.Replace("拾零","拾");
// CapStr = CapStr.Replace("零拾","零");
// CapStr = CapStr.Replace("零佰","零");
// CapStr = CapStr.Replace("零仟","零");
// CapStr = CapStr.Replace("零零","零");
// CapStr = CapStr.Replace("零零零","零");
// CapStr = CapStr.Replace("零零零零","零");
// CapStr = CapStr.Replace("零零","零");
return CapStr;
}
直接调用ConvertToCap方法即可