您的位置:首页 > 编程语言 > C#

C# 人民币(RMB)转化为大写字母

2007-12-21 10:02 417 查看

public class ToChineseValue




...{




private enum chineseChar...{零,壹,贰,叁,肆,伍,陆,柒,捌,玖};




private enum charValue...{个=1,十,百,千}




private enum c...{元=1,万,亿,兆};




private enum afterPoint...{角,分};


public ToChineseValue()




...{


//


// TODO: 在此处添加构造函数逻辑


//


}


public string toChineseChar(decimal d)




...{


decimal flag=0;


if(d<0)




...{


flag=d;


d=-d;


}




string strChinese="";


string nextString="";




System.Globalization.NumberFormatInfo fmat=new System.Globalization.NumberFormatInfo();


fmat.CurrencyDecimalDigits=2;


fmat.CurrencySymbol="";




fmat.CurrencyGroupSizes =new int []...{4,4,4,4};


fmat.CurrencyGroupSeparator=",";




string strx=d.ToString("c",fmat);


string []afterArray=strx.ToString() .Split ('.');




char[] prePoint=afterArray[0].ToCharArray ();


char [] nextChar=afterArray[1].ToCharArray ();




if(System.Convert .ToDecimal (afterArray[0].ToString ())==0)




...{ strChinese="";}


else




...{


string [] str=afterArray[0].ToString().Split (',');


int Num=str.Length ;


//交错数组用来放四个一组的数组


char[][]part=new char [Num][];


for(int i=0;i<str.Length ;i++)




...{


part[i]=str[i].ToCharArray ();


}


for(int i=0;i<Num;i++)




...{


for(int j=0;j<part[i].Length;j++)




...{


//用枚举完成汉字的转换


strChinese+=((chineseChar)int.Parse (part[i][j].ToString ())).ToString ();


//用枚举完成单位: 个 十 百 千


strChinese+=((charValue)(part[i].Length-j)).ToString();


}


//以下为处理元 万 亿 兆


strChinese+=((c)(part.Length-i)).ToString();


}


}


//处理点号后面的小数部分


if(System.Convert.ToDecimal(afterArray[1].ToString ())==0&&System.Convert.ToDecimal(afterArray [0].ToString ())!=0)




...{


nextString="整";


}


else




...{


for(int i=0;i<2;i++)




...{


int t=int.Parse (nextChar[i].ToString ());


nextString+=((chineseChar)int.Parse (nextChar[i].ToString ())).ToString ();


nextString+=((afterPoint)(i)).ToString();


if(t==0)




...{


StringBuilder str=new StringBuilder(nextString);


nextString=str.Replace ("零零","零").ToString ();


nextString=str.Replace ("零角零分","零元").ToString ();


}


}


}


StringBuilder sb=new StringBuilder(strChinese);


for(int i=0;i<4;i++)




...{


strChinese=sb.Replace ("个","").ToString ();


strChinese=sb.Replace ("零元","元").ToString ();


strChinese=sb.Replace ("零万","万").ToString ();


strChinese=sb.Replace ("亿万","亿").ToString ();


strChinese=sb.Replace ("零亿","亿").ToString ();


strChinese=sb.Replace ("零十","零").ToString ();


strChinese=sb.Replace ("零百","零").ToString ();


strChinese=sb.Replace ("零千","零").ToString ();


strChinese=sb.Replace ("零零","零").ToString ();


strChinese=sb.Replace ("零角零分","整").ToString ();


}


if(flag>=0)




...{


return strChinese+nextString;


}


return "负"+strChinese+nextString;


}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: