将金额大写

  /// <summary>
  /// 描述:将输入的数字的人民币金额大写
  /// </summary>
  /// <param name="je">string 数字金额的字符串</param>
  /// <returns>string 返回大写后的金额</returns>
  public string JEDX(string je)
  {
   string SM = "零壹贰叁肆伍陆柒捌玖";//要用到的数字
   string DW = "分角元拾佰仟万拾佰仟亿拾佰仟万";//要用到的单位
   string DXJE;//要返回的大写金额
   if(9999999999999.99<double.Parse(je))
   {
    DXJE = "数字超出人民币的范围";
   }
  //>>如果输入的数字符合条件
   else
   {
    if(-1 == je.IndexOf("."))
    {
     je = je + "00";
    }
    //>>如果输入的数字中含有小数点
    else
    {
     string XSBF = je.Split(new char[] {'.'},2)[1];//小数部分
     if (0 == XSBF.Length )//如果没有小数位,补齐两位小数
     {
      je = je + "00";
     }
     else if (1 == XSBF.Length)//如果小数位只一位
     {
      je = je + "0";
     }
      //>>如果小数位大于3位,四舍五入
     else if (XSBF.Length > 2)
     {
      double dje = double.Parse(je);
      
      //>>如果小数部分的第三位大于5
      if (int.Parse(XSBF.Substring(2,1)) >= 5)
      {
       dje = dje + 0.01;
       je = dje.ToString();
      }
      //>>如果小数部分的第三位大于5
      je = je.Substring(0,je.Length-(XSBF.Length-2));//将原数舍掉后面的部分只保留两位小数

     }
     //>>如果小数位大于3位,四舍五入
    }
    //>>如果输入的数字中含有小数点


    je = je.Replace(".","");//去掉小数点
    DXJE = "整";
    int dw;//单位的索引
    int shu;//数的索引


    //>>开始从金额的最后一位开始大写
    for (shu=je.Length-1,dw=0;shu>=0;shu--,dw++)
    {
     int w = int.Parse(je.Substring(shu,1));//输入数字的第shu位
     DXJE = DW.Substring(dw,1) + DXJE;
     DXJE = SM.Substring(w,1) + DXJE;
    }
    //>>开始从金额的最后一位开始大写

   }
  //>>如果输入的数字符合条件
   if(DXJE.Substring(0,1)=="元")
   {
    DXJE = DXJE.Substring(1,DXJE.Length-1);
   }
   return DXJE;
  }

posted on 2005-12-06 16:49  小肠与小豆子  阅读(328)  评论(0)    收藏  举报

导航