Csharp/C#教程:C#把数字转换成大写金额的代码实例分享

实现代码:

代码如下:
//例如:(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;
  &nbsp ;            }
               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

(0)
上一篇 2021年10月22日
下一篇 2021年10月22日

精彩推荐