转自: wxjUN(红星大队) ( ) 信誉:101
我给一个金额大写转换的给你参考,行不?{
double wlNum =double.Parse(textBox1.Text);
string wlAmt,wkCd ;
wkCd="";
wlAmt=wlNum.ToString("f").PadLeft(12);
for(int i=0;i<=11;i++)
{
if (i!=9)
{
wkCd +=yGetChg(wlAmt.Substring(i,1),i,wlAmt);
}
}
textBox1.Text=wlAmt;
textBox2.Text=wkCd.Trim();
}
string yGetChg(string wlCd , int wlLoc , string wlAmtt )
{
string wlDd="億仟佰拾萬仟佰拾元 角分";
string wlName="";
string wlTemp=wlAmtt.Substring(1,1)+wlAmtt.Substring(2,1)+wlAmtt.Substring(3,1)+ wlAmtt.Substring(4,1)+"0";
int wlTemp2=int.Parse( wlTemp);
switch (wlCd)
{
case "1":
wlName="壹" + wlDd.Substring(wlLoc,1);
break;
case "2":
wlName= "貳" + wlDd.Substring(wlLoc, 1);
break;
case "3":
wlName="參" +wlDd.Substring(wlLoc,1);
break;
case "4":
wlName="肆" + wlDd.Substring(wlLoc, 1);
break;
case "5":
wlName="伍" + wlDd.Substring(wlLoc, 1);
break;
case "6":
wlName="陸" + wlDd.Substring(wlLoc, 1);
break;
case "7":
wlName="柒" + wlDd.Substring(wlLoc, 1);
break;
case "8":
wlName="捌" + wlDd.Substring(wlLoc, 1);
break;
case "9":
wlName="玖" + wlDd.Substring(wlLoc, 1);
break;
case "0":
if(wlLoc<11)
{
if(("1234567").IndexOf(wlLoc.ToString())>0 & ("0").IndexOf(wlAmtt.Substring(wlLoc+1,1))<0)
{
wlName="零";
}
if(wlAmtt.Substring(wlLoc+1,1)==".")
{
wlName=wlDd.Substring(wlLoc,1);
}
if(wlLoc==4 & wlTemp2>0 )
{
wlName= "萬";
}
}
break;
}
return wlName.Trim();
} :)
一个实用的大小写金额转换程序AnsiString GetBigMoney(AnsiString s)
{
if ((s.Length()<=8) && (s.ToIntDef(0)==0)) return "币零元零角整";
AnsiString odxc,odxs,oszc,oscc,oscc0; int oi,oi0,i;
double ormb=StrToFloat(s); //金额小写
if (ormb==0.00) return "币零元零角整";
odxc="分角圆拾佰仟万拾佰仟亿拾佰仟万拾佰仟亿";
odxs="零壹贰叁肆伍陆柒捌玖";
oszc=FloatToStr(abs(ormb));
i=AnsiPos('.',s);
oszc.Delete(i,1); // stuf(oszc,18,1,'');
oszc=Trim(oszc); oscc=""; oi0=0;
for (oi=oszc.Length();oi>0;oi--)
{ oscc=odxc.SubString(oi0*2+1,2)+oscc; oscc=odxs.SubString(StrToInt(oszc.SubString(oi,1))*2+1,2)+oscc;
oi0++; }
oscc0="";
for (oi=1;oi<=oscc.Length();oi=oi+4)
{ if (oscc.SubString(oi,2)=="零" )
{ if ( oscc.SubString(oi+2,2)=="万" )
{ if ( oscc0.SubString(oscc0.Length()-3,4)!="亿零" )
{ if (oscc0.SubString(oscc0.Length()-1,2)=="零" )
oscc0=oscc0.SubString(1,oscc0.Length()-2)+"万";
else oscc0=oscc0+"万"; }
continue; }
if ( oscc.SubString(oi+2,2)=="圆")
{
if (oscc0.SubString(oscc0.Length()-1,2)=="零")
oscc0=oscc0.SubString(1,oscc0.Length()-2)+"圆";
else oscc0=oscc0+"圆";
continue;
}
if ( oscc.SubString(oi+2,2)=="亿" )
{
if (oscc0.SubString(oscc0.Length()-1,2)=="零")
oscc0=oscc0.SubString(1,oscc0.Length()-2)+"亿";
else oscc0=oscc0+"亿";
continue; }
if (oscc0.SubString(oscc0.Length()-1,2)!="零" )
oscc0=oscc0+"零";
}
else oscc0=oscc0+oscc.SubString(oi,4);
}
if ((oscc0.SubString(oscc0.Length()-3,4)=="圆零") )
{ oscc0=oscc0.SubString(1,oscc0.Length()-2)+"整";
return "币"+oscc0; }
if ((oscc0.SubString(oscc0.Length()-3,4)=="角零" ))
{ oscc0=oscc0.SubString(1,oscc0.Length()-2)+"整";
return "币"+oscc0;
}
if ((oscc0.SubString(oscc0.Length()-1,2)=="零" ))
oscc0=oscc0.SubString(1,oscc0.Length()-2)+"圆整";
return "币"+oscc0;
}
// 货币金额大写转换库 Money2String.dll// 静态中文转换方法 String GetCnString(String MoneyString)
// 最大转化金额 9999999999999999.99 (16位整数位,2位小数位)
// 方法返回值 转换成功则返回非零长字串,否则返回零长字串// 静态英文转换方法 String GetEnString(String MoneyString)
// 最大转化金额 999999999999999.99 (15位整数位,2位小数位)
// 方法返回值 转换成功则返回非零长字串,否则返回零长字串
// 程序设计 xlFancy 版本 2003.03.18.22 - 2003.04.09
// 邮箱地址 [email protected]
public class Money2String
{private static readonly String cnNumber = "零壹贰叁肆伍陆柒捌玖";
private static readonly String cnUnit = "分角元拾佰仟万拾佰仟亿拾佰仟兆拾佰仟";
// 以下是货币金额中文大写转换方法
public static String GetCnString(String MoneyString)
{
String [] tmpString = MoneyString.Split('.');
String intString = MoneyString; // 默认为整数
String decString = ""; // 保存小数部分字串
String rmbCapital = ""; // 保存中文大写字串
int k;
int j;
int n; if (tmpString.Length>1)
{
intString = tmpString[0]; // 取整数部分
decString = tmpString[1]; // 取小数部分
}
decString += "00";
decString = decString.Substring (0,2); // 保留两位小数位
intString += decString; try
{
k = intString.Length -1;
if (k>0 && k<18)
{
for (int i=0;i<=k;i++)
{
j=(int)intString[i]-48;
// rmbCapital = rmbCapital + cnNumber[j] + cnUnit[k-i]; // 供调试用的直接转换
n = i+1 >= k ? (int)intString[k]-48:(int)intString[i+1]-48; // 等效于 if( ){ }else{ }
if (j==0)
{
if(k-i==2 || k-i==6 || k-i==10 || k-i==14)
{
rmbCapital += cnUnit[k-i];
}
else
{
if (n != 0)
{
rmbCapital += cnNumber[j];
}
}
}
else
{
rmbCapital = rmbCapital + cnNumber[j] + cnUnit[k-i];
}
} rmbCapital = rmbCapital.Replace ("兆亿万","兆");
rmbCapital = rmbCapital.Replace ("兆亿","兆");
rmbCapital = rmbCapital.Replace ("亿万","亿");
rmbCapital = rmbCapital.TrimStart('元');
rmbCapital = rmbCapital.TrimStart('零'); return rmbCapital;
}
else
{
return ""; // 超出转换范围时,返回零长字串
}
}
catch
{
return ""; // 含有非数值字符时,返回零长字串
}
}
public static string GetChinaMoney(decimal money)
{
string chinaNumeric;//数的汉字
string chinaUnit;//位的汉写
string sMoney;//A*100中取出的值
int sMoneyLength;//A的值乘以100的字符串长度
int zero=0;//用来计算连续有几个零
string result ; result = "";
chinaNumeric = "零壹贰叁肆伍陆柒捌玖";
chinaUnit = "万仟佰拾亿仟佰拾万仟佰拾元角分";
sMoney = Convert.ToInt64 (money*100).ToString (); sMoneyLength=sMoney.Length ; chinaUnit=chinaUnit.Substring (chinaUnit.Length -sMoneyLength,sMoneyLength); for(int i=0 ;i<sMoneyLength;i++)
{
string cNumeric;//数字的汉语读法
string cUnit;//数字位的汉字读法
string s;//从原A值中取出的值
s = sMoney.Substring (i,1); if (s!="0")
{ cNumeric = chinaNumeric.Substring ( int.Parse (s), 1);
cUnit = chinaUnit.Substring ( i, 1);
zero = 0 ; //表示本位不为零
}
else
{
if ((zero == 0) || (i == sMoneyLength - 10) || (i == sMoneyLength - 6) || (i == sMoneyLength - 2))
cNumeric = "零" ;
else
cNumeric = ""; zero = zero + 1 ; //表示本位为0
//如果转换的数值需要扩大,那么需改动以下表达式 I 的值。
cUnit = ""; if (i == sMoneyLength - 11)
{
cUnit = "亿";
zero = 0;
}
if (i == sMoneyLength - 7)
{
cUnit = "万";
zero = 0;
}
if( i == sMoneyLength - 3)
{
cUnit = "元";
zero = 0;
}
if (i == sMoneyLength-1)
cUnit = "整";
} result = result + cNumeric + cUnit; }
sb.Replace ("仟仟","仟");
sb.Replace ("佰佰","佰");
sb.Replace ("零元","元");
sb.Replace ("零万","万");
sb.Replace ("零亿","亿");
sb.Replace ("零整","整");
sb.Replace ("零佰","零");
sb.Replace ("零仟","零");
sb.Replace ("元元","元");
return sb.ToString (
{
string Mword;
double s=Convert.ToDouble(textBox1.Text);
figure2word(s,out Mword);
textBox2.Text=Mword;
}
private void figure2word( double s,out string MoneyWord)
{ int i;
double r;
string ts,ss,tt,t;
ss="";
tt="";
MoneyWord=null;
if ( Math.Abs(s)>0 )
{
r=(double)(Math.Abs(s)*1000)/1000;
ts=string.Format("{0}",r);
if ( ts.Length>15 )
{
MoneyWord="数字太大";
}
else
{
t="";
for ( i =0 ; i < ts.Length;i++ )
{
if ( ts[i].ToString()!="." )
{
switch (ts[i].ToString())
{
case "0":
ss="零";
break;
case "1":
ss="壹";
break;
case "2":
ss="贰";
break;
case "3":
ss="叁";
break;
case "4":
ss="肆";
break;
case "5":
ss="伍";
break;
case "6":
ss="陆";
break;
case "7":
ss="柒";
break;
case "8":
ss="捌";
break;
case "9":
ss="玖";
break;
} switch (ts.Length-i)
{
case 1:
tt="分整";
break;
case 2:
tt="角";
break;
case 3:
tt=".";
break;
case 4:
tt="元";
break;
case 5:
tt="拾";
break;
case 6:
tt="佰";
break;
case 7:
tt="仟";
break;
case 8:
tt="万";
break;
case 9:
tt="拾";
break;
case 10:
tt="佰";
break;
case 11:
tt="仟";
break;
case 12:
tt="亿";
break;
case 13:
tt="拾";
break;
case 14:
tt="佰";
break;
case 15:
tt="仟";
break;
}
t=t+ss+tt;
}
}
MoneyWord=t;
}
}
else
MoneyWord="零";
}
}copy上去就能用
{
string DX=m.ToString();
int XSD=DX.IndexOf(".",0);
string XP;
if(XSD==-1)
{
XP=RY(DX);
return XP;
}
else
{
string RX="";
string DX1=DX.Substring(0,XSD);
XP=RY(DX1);
string DX2=DX.Substring(XSD,DX.Length-XSD).Substring(1);
if(DX2.Length==1)
if (DX2[0]!='0')
RX=HZ(DX2[0])+"角零分";
if(DX2.Length==2)
{
if(DX2[1]!='0'&& DX2[0]!='0')
RX=HZ(DX2[0])+"角"+HZ(DX2[1])+"分";
else
if(DX2[0]=='0')
RX=HZ(DX2[1])+"分";
}
XP=XP+RX;
return XP;
}
}
private string RY(string DX)
{
string R="";
int l=DX.Length;
if(DX=="0") return R;
int b=0;
for(int i=0;i<DX.Length;i++)
{
int m=DX.Length-i;
R=R+HZ(DX[i]);
if(b==0 && DX[i]=='0'&& m!=5 && m!=1 && i<DX.Length-1)
{
bool p=true;
for(int k=i+1;k<DX.Length;k++)
{
if(DX[k]=='0') p=false;
}
if(p==true)
{
R=R+"零";
b=1;
}
}
if(m==8 && DX[i]!='0') R=R+"仟";
if(m==7 && DX[i]!='0') R=R+"佰";
if(m==6 && DX[i]!='0') R=R+"拾";
if(m==5 ) R=R+"万";
if(m==4 && DX[i]!='0') R=R+"仟";
if(m==3 && DX[i]!='0') R=R+"佰";
if(m==2 && DX[i]!='0') R=R+"拾";
if(m==1) R=R+"元";
}
return R;
} private string HZ(char num)
{
switch(num)
{
case '1': return "壹";
case '2': return "贰";
case '3': return "叁";
case '4': return "肆";
case '5': return "伍";
case '6': return "陆";
case '7': return "柒";
case '8': return "捌";
case '9': return "玖";
default : return "";
}
}
private string RMB(double m)
{
string DX=m.ToString();
int XSD=DX.IndexOf(".",0);
string XP;
if(XSD==-1)
{
XP=RY(DX);
return XP;
}
else
{
string RX="";
string DX1=DX.Substring(0,XSD);
XP=RY(DX1);
string DX2=DX.Substring(XSD,DX.Length-XSD).Substring(1);
if(DX2.Length==1)
if (DX2[0]!='0')
RX=HZ(DX2[0])+"角零分";
if(DX2.Length==2)
{
if(DX2[1]!='0'&& DX2[0]!='0')
RX=HZ(DX2[0])+"角"+HZ(DX2[1])+"分";
else
if(DX2[0]=='0')
RX=HZ(DX2[1])+"分";
}
XP=XP+RX;
return XP;
}
}
private string RY(string DX)
{
string R="";
int l=DX.Length;
if(DX=="0") return R;
int b=0;
for(int i=0;i<DX.Length;i++)
{
int m=DX.Length-i;
R=R+HZ(DX[i]);
if(b==0 && DX[i]=='0'&& m!=5 && m!=1 && i<DX.Length-1)
{
bool p=true;
for(int k=i+1;k<DX.Length;k++)
{
if(DX[k]=='0') p=false;
}
if(p==true)
{
R=R+"零";
b=1;
}
}
if(m==8 && DX[i]!='0') R=R+"仟";
if(m==7 && DX[i]!='0') R=R+"佰";
if(m==6 && DX[i]!='0') R=R+"拾";
if(m==5 ) R=R+"万";
if(m==4 && DX[i]!='0') R=R+"仟";
if(m==3 && DX[i]!='0') R=R+"佰";
if(m==2 && DX[i]!='0') R=R+"拾";
if(m==1) R=R+"元";
}
return R;
} private string HZ(char num)
{
switch(num)
{
case '1': return "壹";
case '2': return "贰";
case '3': return "叁";
case '4': return "肆";
case '5': return "伍";
case '6': return "陆";
case '7': return "柒";
case '8': return "捌";
case '9': return "玖";
default : return "";
}
}