.Net中关于人民币的操作

   1:      /// <summary> 
   2:      /// Rmb 的摘要说明。 
   3:      /// </summary> 
   4:      public class Rmb
   5:      {
   6:          /// <summary> 
   7:          /// 转换人民币大小金额 
   8:          /// </summary> 
   9:          /// <param name="num">金额</param> 
  10:          /// <returns>返回大写形式</returns> 
  11:          public static string CmycurD(decimal num)
  12:          {
  13:              string str1 = "零壹贰叁肆伍陆柒捌玖";            //0-9所对应的汉字 
  14:              string str2 = "万仟佰拾亿仟佰拾万仟佰拾元角分"; //数字位所对应的汉字 
  15:              string str3 = "";    //从原num值中取出的值 
  16:              string str4 = "";    //数字的字符串形式 
  17:              string str5 = "";  //人民币大写金额形式 
  18:              int i;    //循环变量 
  19:              int j;    //num的值乘以100的字符串长度 
  20:              string ch1 = "";    //数字的汉语读法 
  21:              string ch2 = "";    //数字位的汉字读法 
  22:              int nzero = 0;  //用来计算连续的零值是几个 
  23:              int temp;            //从原num值中取出的值 
  24:   
  25:              num = Math.Round(Math.Abs(num), 2);    //将num取绝对值并四舍五入取2位小数 
  26:              str4 = ((long)(num * 100)).ToString();        //将num乘100并转换成字符串形式 
  27:              j = str4.Length;      //找出最高位 
  28:              if (j > 15) { return "溢出"; }
  29:              str2 = str2.Substring(15 - j);   //取出对应位数的str2的值。如:200.55,j为5所以str2=佰拾元角分 
  30:   
  31:              //循环取出每一位需要转换的值 
  32:              for (i = 0; i < j; i++)
  33:              {
  34:                  str3 = str4.Substring(i, 1);          //取出需转换的某一位的值 
  35:                  temp = Convert.ToInt32(str3);      //转换为数字 
  36:                  if (i != (j - 3) && i != (j - 7) && i != (j - 11) && i != (j - 15))
  37:                  {
  38:                      //当所取位数不为元、万、亿、万亿上的数字时 
  39:                      if (str3 == "0")
  40:                      {
  41:                          ch1 = "";
  42:                          ch2 = "";
  43:                          nzero = nzero + 1;
  44:                      }
  45:                      else
  46:                      {
  47:                          if (str3 != "0" && nzero != 0)
  48:                          {
  49:                              ch1 = "零" + str1.Substring(temp * 1, 1);
  50:                              ch2 = str2.Substring(i, 1);
  51:                              nzero = 0;
  52:                          }
  53:                          else
  54:                          {
  55:                              ch1 = str1.Substring(temp * 1, 1);
  56:                              ch2 = str2.Substring(i, 1);
  57:                              nzero = 0;
  58:                          }
  59:                      }
  60:                  }
  61:                  else
  62:                  {
  63:                      //该位是万亿,亿,万,元位等关键位 
  64:                      if (str3 != "0" && nzero != 0)
  65:                      {
  66:                          ch1 = "零" + str1.Substring(temp * 1, 1);
  67:                          ch2 = str2.Substring(i, 1);
  68:                          nzero = 0;
  69:                      }
  70:                      else
  71:                      {
  72:                          if (str3 != "0" && nzero == 0)
  73:                          {
  74:                              ch1 = str1.Substring(temp * 1, 1);
  75:                              ch2 = str2.Substring(i, 1);
  76:                              nzero = 0;
  77:                          }
  78:                          else
  79:                          {
  80:                              if (str3 == "0" && nzero >= 3)
  81:                              {
  82:                                  ch1 = "";
  83:                                  ch2 = "";
  84:                                  nzero = nzero + 1;
  85:                              }
  86:                              else
  87:                              {
  88:                                  if (j >= 11)
  89:                                  {
  90:                                      ch1 = "";
  91:                                      nzero = nzero + 1;
  92:                                  }
  93:                                  else
  94:                                  {
  95:                                      ch1 = "";
  96:                                      ch2 = str2.Substring(i, 1);
  97:                                      nzero = nzero + 1;
  98:                                  }
  99:                              }
 100:                          }
 101:                      }
 102:                  }
 103:                  if (i == (j - 11) || i == (j - 3))
 104:                  {
 105:                      //如果该位是亿位或元位,则必须写上 
 106:                      ch2 = str2.Substring(i, 1);
 107:                  }
 108:                  str5 = str5 + ch1 + ch2;
 109:   
 110:                  if (i == j - 1 && str3 == "0")
 111:                  {
 112:                      //最后一位(分)为0时,加上“整” 
 113:                      str5 = str5 + '整';
 114:                  }
 115:              }
 116:              if (num == 0)
 117:              {
 118:                  str5 = "零元整";
 119:              }
 120:              return str5;
 121:          }
 122:   
 123:          /**/
 124:          /// <summary> 
 125:          /// 一个重载,将字符串先转换成数字在调用CmycurD(decimal num) 
 126:          /// </summary> 
 127:          /// <param name="num">用户输入的金额,字符串形式未转成decimal</param> 
 128:          /// <returns></returns> 
 129:          public static string CmycurD(string numstr)
 130:          {
 131:              try
 132:              {
 133:                  decimal num = Convert.ToDecimal(numstr);
 134:                  return CmycurD(num);
 135:              }
 136:              catch
 137:              {
 138:                  return "非数字形式!";
 139:              }
 140:          }
 141:      } 

转载于:https://www.cnblogs.com/chenamo5776/archive/2011/11/13/2247130.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值