转自: 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();
} :)

解决方案 »

  1.   

    以下代码仅供参考:
    一个实用的大小写金额转换程序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;

      

  2.   

    给你价值3000元的代码,总该把100分给我了!
    // 货币金额大写转换库   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 "";   // 含有非数值字符时,返回零长字串
    }
    }
      

  3.   

    我有一个,是别人写的,我修改了一下,
    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; }
      

  4.   

    StringBuilder sb=new StringBuilder (result);

    sb.Replace ("仟仟","仟");
    sb.Replace ("佰佰","佰");
    sb.Replace ("零元","元");
    sb.Replace ("零万","万");
    sb.Replace ("零亿","亿");
    sb.Replace ("零整","整");
    sb.Replace ("零佰","零");
    sb.Replace ("零仟","零");
    sb.Replace ("元元","元");
    return sb.ToString (
      

  5.   

    private void button1_Click(object sender, System.EventArgs e)
    {
    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上去就能用
      

  6.   

    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 "";
    }
    }
      

  7.   

    这个好用:
    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 "";
    }
    }