实现代码:
代码如下:
//例如:(newMoney(200)).ToString()==”贰佰元”
namespaceSkyiv.Util{
usingSystem.Text;
classTest{
staticvoidMain(){
for(;;){
System.Console.Write(“金额:”);
strings=System.Console.ReadLine();
decimalm;
try{
m=decimal.Parse(s);
}catch{
break;
}
System.Console.WriteLine(“大写:”+newMoney(m));
}
}
}
//该类重载的ToString()方法返回的是大写金额字符串
classMoney{
publicstringYuan=”元”;//“元”,可以改为“圆”、“卢布”之类
publicstringJiao=”角”;//“角”,可以改为“拾”
publicstringFen=”分”;//“分”,可以改为“美分”之类
staticstringDigit=”零壹贰叁肆伍陆柒捌玖”;//大写数字
boolisAllZero=true;//片段内是否全零
boolisPreZero=true;//低一位数字是否是零
boolOverflow=false;//溢出标志
longmoney100;//金额*100,即以“分”为单位的金额
longvalue;//money100的绝对值
StringBuildersb=newStringBuilder();//大写金额字符串,逆序
//只读属性:”零元”
publicstringZeroString{
get{
returnDigit[0]+Yuan;
}
}
//构造函数
publicMoney(decimalmoney){
try{
money100=(long)(money*100m);
}catch{
Overflow=true;
}
if(money100==long.MinValue)Overflow=true;
}
//重载ToString()方法,返回大写金额字符串
publicoverridestringToString(){
if(Overflow)return”金额超 范围”;
if(money100==0)returnZeroString;
string[]Unit={
Yuan,
“万”,
“亿”,
“万”,
“亿亿”
};
value=System.Math.Abs(money100);
ParseSection(true);
for(inti=0;i<Unit.Length&&value>0;i++){
if(isPreZero&&!isAllZero)sb.Append(Digit[0]);
if(i==4&&sb.ToString().EndsWith(Unit[2]))sb.Remove(sb.Length-Unit[2].Length,Unit[2].Length);
sb.Append(Unit[i]);
ParseSection(false);
if((i%2)==1&&isAllZero)sb.Remove(sb.Length-Unit[i].Length,Unit[i].Length);
}
if(money100<0)sb.Append(“负”);
returnReverse();
}
//解析“片段”:“角分(2位)”或“万以内的一段(4位)”
voidParseSection(boolisJiaoFen){
string[]Unit=isJiaoFen?newstring[]{
Fen,
Jiao
}:newstring[]{
“”,
“拾”,
“佰”,
“仟”
};
isAllZero=true;
for(inti=0;i<Unit.Length&&value>0;i++){
intd=(int)(value%10);
if(d!=0){
if(isPreZero&&!isAllZero)sb.Append(Digit[0]);
sb.AppendFormat(“{0}{1}”,Unit[i],Digit[d]);
isAllZero=false;
  ; }
isPreZero=(d==0);
value/=10;
}
}
//反转字符串
stringReverse(){
StringBuildersbReversed=newStringBuilder();
for(inti=sb.Length-1;i>=0;i–)sbReversed.Append(sb[i]);
returnsbReversed.ToString();
}
}
}
您可能感兴趣的文章:C#中利用正则表达式将人民币金额转换为大写汉字C#大小写转换(金额)实例代码C#找出字符串中第一个字母并大写的方法C#使用正则表达式实现首字母转大写的方法C#实现将浮点数表示的货币数量以汉字大写形式输出的方法C#实现将汉字转化为2位大写的16进制Unicode的方法C#实现人民币大写转换示例代码使用C#实现阿拉伯数字到大写中文的转换C#实现将商品金额小写转换成大写的方法
详解C++编程中类模板的相关使用知识
简要介绍C++编程中的友元函数和友元类
上述就是C#学习教程:C#把数字转换成大写金额的代码实例分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/905487.html