资源描述:
《小写数字转换为中文大写的最完整C#方案》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、usingSystem;usingSystem.Text;namespaceDigitToChnText{///本程序用于将小写数字转换为中文大写,提供以下功能://2.能识别并处理任何错误输入//3.算法稳定,速度较快,中文大写比较符合语言习惯///本程序用于将小写数字变成大写中文数字classDigitToChnText{privatereadonlychar[]chnText;privatereadonlychar[]chnDigit;publicDigitToChnText(){chnText=newchar[]{'零','一','二','三','四','五','六','七'
2、,'八','九'};chnDigit=newchar[]{'十','百','千','万','亿'};}publicstringConvert(stringstrDigit){//检查输入数字decimaldec;try{dec=decimal.Parse(strDigit);}catch(FormatException){thrownewException("输入数字的格式不正确。");}catch(Exceptione){throwe;}if(dec<=-10000000000000000m
3、
4、dec>=10000000000000000m){thrownewException("
5、输入数字太大或太小,超出范围。");}StringBuilderstrResult=newStringBuilder();//提取符号部分//'+'在最前if("+"==strDigit.Substring(0,1)){strDigit=strDigit.Substring(1);}//'-'在最前elseif("-"==strDigit.Substring(0,1)){strResult.Append('负');strDigit=strDigit.Substring(1);}//'+'在最后elseif("+"==strDigit.Substring(strDigit.Length
6、-1,1)){strDigit=strDigit.Substring(0,strDigit.Length-1);}//'-'在最后elseif("-"==strDigit.Substring(strDigit.Length-1,1)){strResult.Append('负');strDigit=strDigit.Substring(0,strDigit.Length-1);}//提取整数和小数部分intindexOfPoint;if(-1==(indexOfPoint=strDigit.IndexOf('.')))//如果没有小数部分{strResult.Append(Conver
7、tIntegral(strDigit));}else//有小数部分{//先转换整数部分if(0==indexOfPoint)//如果“.”是第一个字符{strResult.Append('零');}else{strResult.Append(ConvertIntegral(strDigit.Substring(0,indexOfPoint)));}//再转换小数部分if(strDigit.Length-1!=indexOfPoint)//如果“.”不是最后一个字符{strResult.Append('点');strResult.Append(ConvertFractional(str
8、Digit.Substring(indexOfPoint+1)));}}returnstrResult.ToString();}//转换整数部分protectedstringConvertIntegral(stringstrIntegral){//去掉数字前面所有的'0'//并把数字分割到字符数组中char[]integral=((long.Parse(strIntegral)).ToString()).ToCharArray();//变成中文数字并添加中文数位StringBuilderstrInt=newStringBuilder();inti;intdigit;digit=int
9、egral.Length-1;//处理最高位到十位的所有数字for(i=0;i10、
11、12==digit){strInt.Append(chnDigit[3]);//'万'}elseif(8==digit){strInt.Append(chnDigit[4]);//