将小写金额转换成人民币大写金额

这个是好久以前用到的,最近又有人问到,所以拿出来晒晒。

 

/// <summary>
  /// 将小写金额转换成人民币大写金额

  /// </summary>
  public class ChinaMoney
  {
   private static string [] HanDigiStr = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};

   private static string [] HanDiviStr = { "","拾","佰","仟","万","拾","佰","仟","亿",
               "拾","佰","仟","万","拾","佰","仟","亿",
               "拾","佰","仟","万","拾","佰","仟" };

   private static string PositiveIntegerToHanStr(string NumStr)
   {    
    string RMBStr="";
    int len,n;
    bool hasvalue=false,lastzero=false;  

    len = NumStr.Length;

    for(int i=0;i<len;i++)
    {
     n = NumStr[i] - '0';
     int j=len-i-1;
     if( n!=0 )
     {
      if( lastzero ) RMBStr += HanDigiStr[0];
      RMBStr += HanDigiStr[n];
      RMBStr += HanDiviStr[len-i-1];
      hasvalue = true;
     }
     else
     {
      if( j==8 || j==4 && hasvalue )
       RMBStr += HanDiviStr[len-i-1];
     }
     if( j%8==0 ) hasvalue = false;
     lastzero = (n==0) && (j%4!=0);
    }

    if( RMBStr.Length==0 ) return HanDigiStr[0];
    return RMBStr;
   }

   public static string NumToRMBStr(double val)
   {
    if(val>100000000000) return "数字过大!";
    string SignStr="",TailStr="";
    double fraction=0;
    Int64 integer=0;
    if( val<0 )
    {
     val = -val;
     SignStr = "负";
    }

    integer=Convert.ToInt64(val-val%1);
    int jiao,fen;


    fraction = Math.Round(val%1,2);
    fen = Convert.ToInt32((fraction*100)%10);//分

    jiao = Convert.ToInt32((fraction*100-fen)/10);//角
    if( jiao==0 && fen==0 )
    {
     TailStr = "整";
    }
    else
    {
     TailStr = HanDigiStr[jiao];
     if( jiao!=0 )
      TailStr += "角";
     if( integer==0 && jiao==0 )
      TailStr = "";
     if( fen!=0 )
      TailStr += HanDigiStr[fen] + "分";
    }
    return SignStr+PositiveIntegerToHanStr( integer.ToString() )+"元"+TailStr;
   }
  }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值