using System;
using System.Windows.Forms;namespace WindowsApplication1
{
/// <summary>
/// ConvertInt 的摘要说明。
/// </summary>
public class ConvertInt
{
public enum Money{RMB,UKD,USD};
public ConvertInt()
{
//
// TODO: 在此处添加构造函数逻辑
//
} public static void FloatTransform(string strNum,ref string result)
{
string strInt;
string strFloat;
strInt=strNum.Substring(0,strNum.IndexOf(".",0));//整数部分的值
strFloat=strNum.Substring((strNum.IndexOf(".",0)+1),(strNum.Length-strNum.IndexOf(".",0)-1));//小数部分的值
//MessageBox.Show(strInt);
//MessageBox.Show(strFloat);
//return;
int numLen=strInt.Length;
string dx="零壹贰叁肆伍陆柒捌玖";
string ws="分角元拾佰仟万拾佰仟亿拾佰仟";
//MessageBox.Show(ws.Length.ToString());
result=null;
int i=0,w=0;
int q=0;
bool ling=true;
//计算整数的大写!
while(i<numLen)
{
if(strInt.Substring(i,1)!="0")
{
//MessageBox.Show(strNum.Substring(i,1));
result=result+dx.Substring(Convert.ToInt32(strInt.Substring(i,1)),1);
result=result+ws.Substring((numLen-i)+1,1);
ling=false;
i++;
}
else if(ling==false&&strInt.Substring(i,1)=="0")
{
if((numLen-i+1)>10)//判断是否过亿
{
w=0;
for(q=11;q<(numLen-i+1);q++)
{
w=w+Convert.ToInt32(strInt.Substring(numLen-q+1,1));
}
if(w==0)
{
result=result+"亿";
i=numLen-9;
}
else
{
result=result+"零";
i=i+1;
ling=true;
}
}
else if((numLen-i+1)>6)//判断是否是万以上
{
w=0;
for(q=1;q<(numLen-i+1);q++)
{
w=w+Convert.ToInt32(strInt.Substring(numLen-q,1));
}
if(w==0)
{
result=result+"整";
i=numLen+1;
}
else
{
result=result+"零";
i=i+1;
ling=true;
}
} else if((numLen-i+1)>3)
{
w=0;
for(q=1;q<(numLen-i+1);q++)
{
w=w+Convert.ToInt32(strInt.Substring(numLen-q,1));
}
if(w==0)
{
result=result+"整";
i=numLen+1;
}
else
{
result=result+"零";
i=i+1;
ling=true;
}
}
else if((numLen-i+1)>0)
{
w=0;
for(q=1;q<(numLen-i+1);q++)
{
w=w+Convert.ToInt32(strInt.Substring(numLen-q,1));
}
if(w==0)
{
result=result+"整";
i=numLen+1;
}
else
{
result=result+"零";
i=i+1;
ling=true;
}
}
}
else if(strInt.Substring(i,1)=="0"&&ling==true)
{
i=i+1;
} }
//计算小数部分的大写!
int numLenFlt=strFloat.Length;
if(strFloat.Substring(0,1)=="0"&&strFloat.Substring(1,1)=="0")
{
result=result+"整";
}
else if(strFloat.Substring(0,1)!="0"&&strFloat.Substring(1,1)=="0")
{
result=result+dx.Substring(Convert.ToInt32(strFloat.Substring(0,1)),1)+"角";
}
else if(strFloat.Substring(0,1)=="0"&&strFloat.Substring(1,1)!="0")
{
result=result+dx.Substring(Convert.ToInt32(strFloat.Substring(1,1)),1)+"分";
}
else if(strFloat.Substring(0,1)!="0"&&strFloat.Substring(1,1)!="0")
{
result=result+dx.Substring(Convert.ToInt32(strFloat.Substring(0,1)),1)+"角"+dx.Substring(Convert.ToInt32(strFloat.Substring(1,1)),1)+"分";
}
}
public static void DateTransform(DateTime dt,ref string year,ref string month,ref string day)
{
string dx="零壹贰叁肆伍陆柒捌玖";
year=null;
month=null;
day=null;
for(int i=0;i<4;i++)
{
year=year+dx.Substring(Convert.ToInt32(dt.Year.ToString().Substring(i,1)),1);
}
if(dt.Day.ToString().Length<2)
{
month="零"+dx.Substring(dt.Month,1);
}
else
{
for(int i=0;i<2;i++)
{
month=month+dx.Substring(Convert.ToInt32(dt.Month.ToString().Substring(i,1)),1);
}
}
if(dt.Day.ToString().Length<2)
{
day="零"+dx.Substring(Convert.ToInt32(dt.Day),1);
}
else
{
for(int i=0;i<2;i++)
{
day=day+dx.Substring(Convert.ToInt32(dt.Day.ToString().Substring(i,1)),1);
}
}
} }
}
using System.Windows.Forms;namespace WindowsApplication1
{
/// <summary>
/// ConvertInt 的摘要说明。
/// </summary>
public class ConvertInt
{
public enum Money{RMB,UKD,USD};
public ConvertInt()
{
//
// TODO: 在此处添加构造函数逻辑
//
} public static void FloatTransform(string strNum,ref string result)
{
string strInt;
string strFloat;
strInt=strNum.Substring(0,strNum.IndexOf(".",0));//整数部分的值
strFloat=strNum.Substring((strNum.IndexOf(".",0)+1),(strNum.Length-strNum.IndexOf(".",0)-1));//小数部分的值
//MessageBox.Show(strInt);
//MessageBox.Show(strFloat);
//return;
int numLen=strInt.Length;
string dx="零壹贰叁肆伍陆柒捌玖";
string ws="分角元拾佰仟万拾佰仟亿拾佰仟";
//MessageBox.Show(ws.Length.ToString());
result=null;
int i=0,w=0;
int q=0;
bool ling=true;
//计算整数的大写!
while(i<numLen)
{
if(strInt.Substring(i,1)!="0")
{
//MessageBox.Show(strNum.Substring(i,1));
result=result+dx.Substring(Convert.ToInt32(strInt.Substring(i,1)),1);
result=result+ws.Substring((numLen-i)+1,1);
ling=false;
i++;
}
else if(ling==false&&strInt.Substring(i,1)=="0")
{
if((numLen-i+1)>10)//判断是否过亿
{
w=0;
for(q=11;q<(numLen-i+1);q++)
{
w=w+Convert.ToInt32(strInt.Substring(numLen-q+1,1));
}
if(w==0)
{
result=result+"亿";
i=numLen-9;
}
else
{
result=result+"零";
i=i+1;
ling=true;
}
}
else if((numLen-i+1)>6)//判断是否是万以上
{
w=0;
for(q=1;q<(numLen-i+1);q++)
{
w=w+Convert.ToInt32(strInt.Substring(numLen-q,1));
}
if(w==0)
{
result=result+"整";
i=numLen+1;
}
else
{
result=result+"零";
i=i+1;
ling=true;
}
} else if((numLen-i+1)>3)
{
w=0;
for(q=1;q<(numLen-i+1);q++)
{
w=w+Convert.ToInt32(strInt.Substring(numLen-q,1));
}
if(w==0)
{
result=result+"整";
i=numLen+1;
}
else
{
result=result+"零";
i=i+1;
ling=true;
}
}
else if((numLen-i+1)>0)
{
w=0;
for(q=1;q<(numLen-i+1);q++)
{
w=w+Convert.ToInt32(strInt.Substring(numLen-q,1));
}
if(w==0)
{
result=result+"整";
i=numLen+1;
}
else
{
result=result+"零";
i=i+1;
ling=true;
}
}
}
else if(strInt.Substring(i,1)=="0"&&ling==true)
{
i=i+1;
} }
//计算小数部分的大写!
int numLenFlt=strFloat.Length;
if(strFloat.Substring(0,1)=="0"&&strFloat.Substring(1,1)=="0")
{
result=result+"整";
}
else if(strFloat.Substring(0,1)!="0"&&strFloat.Substring(1,1)=="0")
{
result=result+dx.Substring(Convert.ToInt32(strFloat.Substring(0,1)),1)+"角";
}
else if(strFloat.Substring(0,1)=="0"&&strFloat.Substring(1,1)!="0")
{
result=result+dx.Substring(Convert.ToInt32(strFloat.Substring(1,1)),1)+"分";
}
else if(strFloat.Substring(0,1)!="0"&&strFloat.Substring(1,1)!="0")
{
result=result+dx.Substring(Convert.ToInt32(strFloat.Substring(0,1)),1)+"角"+dx.Substring(Convert.ToInt32(strFloat.Substring(1,1)),1)+"分";
}
}
public static void DateTransform(DateTime dt,ref string year,ref string month,ref string day)
{
string dx="零壹贰叁肆伍陆柒捌玖";
year=null;
month=null;
day=null;
for(int i=0;i<4;i++)
{
year=year+dx.Substring(Convert.ToInt32(dt.Year.ToString().Substring(i,1)),1);
}
if(dt.Day.ToString().Length<2)
{
month="零"+dx.Substring(dt.Month,1);
}
else
{
for(int i=0;i<2;i++)
{
month=month+dx.Substring(Convert.ToInt32(dt.Month.ToString().Substring(i,1)),1);
}
}
if(dt.Day.ToString().Length<2)
{
day="零"+dx.Substring(Convert.ToInt32(dt.Day),1);
}
else
{
for(int i=0;i<2;i++)
{
day=day+dx.Substring(Convert.ToInt32(dt.Day.ToString().Substring(i,1)),1);
}
}
} }
}
[STAThread]
static void Main()
{
Application.Run(new Form1());
} private void Form1_Load(object sender, System.EventArgs e)
{
this.textBox1.Text="12,789,24.01";
this.textBox2.Text="";
} private void button1_Click(object sender, System.EventArgs e)
{
string s=this.textBox1.Text.Trim();
s=s.Replace(",","");
//有无 " ."
if(s.IndexOf(".")==-1)
{
s=s+".00";
}
string []a=s.Split('.');
//存放结果
char []m=a[0].ToCharArray();
char []n=a[1].ToCharArray(); string box=dowork(m,n);
this.textBox2.Text=box+"整";
}
private string dowork(char [] s1,char []s2) { string [] R1=new string[]{"仟","佰","拾","元"};//长度为4
string [] R2=new string[]{"角","分"};//长度为2
//处理整数部分
int len=s1.Length;
int len2=s2.Length; string box="";
string box1="";
string box2="";
string box3="";
char []a=null;
char []b=null;
char []c=null; //是否过亿
if(len>=9)
{
a=new char[len-8];
b=new char[4];
c=new char[4];
Array.Copy(s1,0,a,0,len-8);
Array.Copy(s1,len-8,b,0,4);
Array.Copy(s1,len-4,c,0,4);
a=rep(a,len-8);
b=rep(b,4);
c=rep(c,4); } //是否过万
if(len>=5 &&len<=8)
{
b=new char[len-4];
c=new char[4];
Array.Copy(s1,0,b,0,len-4);
Array.Copy(s1,len-4,c,0,4);
b=rep(b,len-4);
c=rep(c,4);
}
//在万以内
if(len<=4)
{
c=new char[len];
Array.Copy(s1,0,c,0,len);
c=rep(c,len);
}
if(c!=null && c.Length>0)
{
//加单位
int j=3;
for(int i=c.Length-1;i>=0;i--) {
if(c.Length==1&&c[c.Length-1]=='零')
{
break;
} if(c[i]!='零')
{
box1=c[i].ToString()+R1[j]+box1;
}
else
{
box1=R1[j]+box1;
}
j--;
}
}
if(b!=null &&b.Length>0)
{
//加单位
int j=3;
for(int i=b.Length-1;i>=0;i--) {
if(b[i]!='零')
{
if(i==b.Length-1)
{
box2=b[i].ToString()+box2;
}
else
{
box2=b[i].ToString()+R1[j]+box2;
}
}
j--;
}
box2=box2+"万"; }
if(a!=null && a.Length>0)
{
//加单位
int j=3;
for(int i=a.Length-1;i>=0;i--) {
if(a[i]!='零')
{
if(i==a.Length-1)
{
box3=a[i].ToString()+box3;
}
else
{
box3=a[i].ToString()+R1[j]+box3;
}
}
j--;
}
box3=box3+"亿"; }
//处理小数数部分
//替换数字
s2=rep(s2,len2);
string box4="";
for(int i=0;i<len2;i++) {
if(i<=1)
{
box4=box4 +s2[i].ToString()+R2[i];
}
}
box=box3+box2+box1+box4;
return box;
}//dowork
private char [] rep(char []s1,int len)
{
//替换数字
for(int i=0;i<len;i++)
{
switch(s1[i])
{
case '0':
s1[i]='零';
break;
case '1':
s1[i]='壹';
break;
case '2':
s1[i]='贰';
break;
case '3':
s1[i]='叁';
break;
case '4':
s1[i]='肆';
break;
case '5':
s1[i]='伍';
break;
case '6':
s1[i]='陆';
break;
case '7':
s1[i]='柒';
break;
case '8':
s1[i]='捌';
break;
case '9':
s1[i]='玖';
break;
} }//for
return s1;
} }
}