- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
小写数字转换为中文大写的最完整C#方案
using System;
using System.Text;
namespace DigitToChnText
{
///本程序用于将小写数字转换为中文大写, 提供以下功能:
//2. 能识别并处理任何错误输入
//3. 算法稳定, 速度较快, 中文大写比较符合语言习惯
/// 本程序用于将小写数字变成大写中文数字
class DigitToChnText
{
private readonly char[] chnText;
private readonly char[] chnDigit;
public DigitToChnText()
{
chnText = new char[]{零, 一, 二, 三, 四, 五, 六, 七, 八, 九};
chnDigit = new char[]{十, 百, 千, 万, 亿};
}
public string Convert( string strDigit )
{
// 检查输入数字
decimal dec;
try
{
dec = decimal.Parse( strDigit );
}
catch( FormatException )
{
throw new Exception(输入数字的格式不正确。);
}
catch( Exception e )
{
throw e;
}
if( dec = -10000000000000000m || dec = 10000000000000000m )
{
throw new Exception( 输入数字太大或太小,超出范围。 );
}
StringBuilder strResult = new StringBuilder();
// 提取符号部分
// +在最前
if( + == strDigit.Substring( 0, 1 ) )
{
strDigit = strDigit.Substring( 1 );
}
// -在最前
else if( - == strDigit.Substring( 0, 1 ) )
{
strResult.Append( 负 );
strDigit = strDigit.Substring( 1 );
}
// +在最后
else if( + == strDigit.Substring( strDigit.Length - 1, 1 ) )
{
strDigit = strDigit.Substring( 0, strDigit.Length - 1 );
}
// -在最后
else if( - == strDigit.Substring( strDigit.Length - 1, 1 ) )
{
strResult.Append( 负 );
strDigit = strDigit.Substring( 0, strDigit.Length - 1 );
}
// 提取整数和小数部分
int indexOfPoint;
if( -1 == ( indexOfPoint = strDigit.IndexOf(.) ) ) // 如果没有小数部分
{
strResult.Append( ConvertIntegral( 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( strDigit.Substring( indexOfPoint + 1 ) ) );
}
}
return strResult.T
文档评论(0)