文章分类

站点统计

  • 分类总数: 13 个
  • 文章总数: 145 篇
  • 评论总数: 35 条
  • 附件总数: 59 个
  • 建站日期: 2008-08-18
  • 访问总数: 388498 人次
  • RSS订阅: 文章|评论

阿拉伯数字转换成中文大写金额(包括小数)(C#)[1]

Admin 于 2008-09-07 15:48:01 发表.Net

订阅: http://www.kaiyuan8.org/Feed/Article_26.aspx
引用: 点这里获取地址 (UTF-8)
在C++程序中嵌入V8——Google浏览器的Javascript虚拟机(2) < 阿拉伯数字转换成中文大写金额(包括小数)(C#)[1] > 阿拉伯数字转换成中文大写金额(包括小数)(C#)[2]

  1. using System; 
  2. /// <summary> 
  3. /// 阿拉伯数字转换成中文大写金额(包括小数) 
  4. /// </summary> 
  5. public class MoneyConverter 
  6.  
  7.     /// 数字字符串 
  8.     /// 转换成中文大写后的字符串或者出错信息提示字符串 
  9.     public string ConvertSum(string str) 
  10.     { 
  11.         if (!IsPositveDecimal(str)) 
  12.             return "输入的不是正数字!"
  13.         if (Double.Parse(str) > 999999999999.99) 
  14.             return "数字太大,无法换算,请输入一万亿元以下的金额"
  15.         char[] ch = new char[1]; 
  16.         ch[0] = '.'//小数点 
  17.         string[] splitstr = null//定义按小数点分割后的字符串数组 
  18.         splitstr = str.Split(ch[0]);//按小数点分割字符串 
  19.         if (splitstr.Length == 1) //只有整数部分 
  20.             return ConvertData(str) + "圆整"
  21.         else //有小数部分 
  22.         { 
  23.             string rstr; 
  24.             rstr = ConvertData(splitstr[0]) + "圆";//转换整数部分 
  25.             rstr += ConvertXiaoShu(splitstr[1]);//转换小数部分 
  26.             return rstr; 
  27.         } 
  28.  
  29.     } 
  30.  
  31.     /// <summary> 
  32.     /// 判断是否是正数字字符串 
  33.     /// </summary> 
  34.     /// <param name="str">判断字符串</param> 
  35.     /// <returns>如果是数字,返回true,否则返回false</returns> 
  36.     public bool IsPositveDecimal(string str) 
  37.     { 
  38.         Decimal d =0; 
  39.         if (!decimal.TryParse(str, out d)) return false
  40.          
  41.         if (d > 0) 
  42.             return true
  43.         else 
  44.             return false
  45.     } 
  46.     ///  
  47.     /// 转换数字(整数) 
  48.     ///  
  49.     /// 需要转换的整数数字字符串 
  50.     /// 转换成中文大写后的字符串 
  51.     public string ConvertData(string str) 
  52.     { 
  53.         string tmpstr = ""
  54.         string rstr = ""
  55.         int strlen = str.Length; 
  56.         if (strlen <= 4)//数字长度小于四位 
  57.         { 
  58.             rstr = ConvertDigit(str); 
  59.  
  60.         } 
  61.         else 
  62.         { 
  63.  
  64.             if (strlen <= 8)//数字长度大于四位,小于八位 
  65.             { 
  66.                 tmpstr = str.Substring(strlen - 4, 4);//先截取最后四位数字 
  67.                 rstr = ConvertDigit(tmpstr);//转换最后四位数字 
  68.                 tmpstr = str.Substring(0, strlen - 4);//截取其余数字 
  69.                 //将两次转换的数字加上萬后相连接 
  70.                 rstr = String.Concat(ConvertDigit(tmpstr) + "萬", rstr); 
  71.                 rstr = rstr.Replace("零萬""萬"); 
  72.                 rstr = rstr.Replace("零零""零"); 
  73.  
  74.             } 
  75.             else 
  76.                 if (strlen <= 12)//数字长度大于八位,小于十二位 
  77.                 { 
  78.                     tmpstr = str.Substring(strlen - 4, 4);//先截取最后四位数字 
  79.                     rstr = ConvertDigit(tmpstr);//转换最后四位数字 
  80.                     tmpstr = str.Substring(strlen - 8, 4);//再截取四位数字 
  81.                     rstr = String.Concat(ConvertDigit(tmpstr) + "萬", rstr); 
  82.                     tmpstr = str.Substring(0, strlen - 8); 
  83.                     rstr = String.Concat(ConvertDigit(tmpstr) + "億", rstr); 
  84.                     rstr = rstr.Replace("零億""億"); 
  85.                     rstr = rstr.Replace("零萬""零"); 
  86.                     rstr = rstr.Replace("零零""零"); 
  87.                     rstr = rstr.Replace("零零""零"); 
  88.                 } 
  89.         } 
  90.         strlen = rstr.Length; 
  91.         if (strlen >= 2) 
  92.         { 
  93.             switch (rstr.Substring(strlen - 2, 2)) 
  94.             { 
  95.                 case "佰零": rstr = rstr.Substring(0, strlen - 2) + "佰"break
  96.                 case "仟零": rstr = rstr.Substring(0, strlen - 2) + "仟"break
  97.                 case "萬零": rstr = rstr.Substring(0, strlen - 2) + "萬"break
  98.                 case "億零": rstr = rstr.Substring(0, strlen - 2) + "億"break
  99.  
  100.             } 
  101.         } 
  102.  
  103.         return rstr; 
  104.     } 
  105.     ///  
  106.     /// 转换数字(小数部分) 
  107.     ///  
  108.     /// 需要转换的小数部分数字字符串 
  109.     /// 转换成中文大写后的字符串 
  110.     public string ConvertXiaoShu(string str) 
  111.     { 
  112.         int strlen = str.Length; 
  113.         string rstr; 
  114.         if (strlen == 1) 
  115.         { 
  116.             rstr = ConvertChinese(str) + "角"
  117.             return rstr; 
  118.         } 
  119.         else 
  120.         { 
  121.             string tmpstr = str.Substring(0, 1); 
  122.             rstr = ConvertChinese(tmpstr) + "角"
  123.             tmpstr = str.Substring(1, 1); 
  124.             rstr += ConvertChinese(tmpstr) + "分"
  125.             rstr = rstr.Replace("零分"""); 
  126.             rstr = rstr.Replace("零角"""); 
  127.             return rstr; 
  128.         } 
  129.  
  130.  
  131.     } 
  132.  
  133.     ///  
  134.     /// 转换数字 
  135.     ///  
  136.     /// 转换的字符串(四位以内) 
  137.     ///  
  138.     public string ConvertDigit(string str) 
  139.     { 
  140.         int strlen = str.Length; 
  141.         string rstr = ""
  142.         switch (strlen) 
  143.         { 
  144.             case 1: rstr = ConvertChinese(str); break
  145.             case 2: rstr = Convert2Digit(str); break
  146.             case 3: rstr = Convert3Digit(str); break
  147.             case 4: rstr = Convert4Digit(str); break
  148.         } 
  149.         rstr = rstr.Replace("拾零""拾"); 
  150.         strlen = rstr.Length; 
  151.  
  152.         return rstr; 
  153.     } 
  154.  
  155.  
  156.     ///  
  157.     /// 转换四位数字 
  158.     ///  
  159.     public string Convert4Digit(string str) 
  160.     { 
  161.         string str1 = str.Substring(0, 1); 
  162.         string str2 = str.Substring(1, 1); 
  163.         string str3 = str.Substring(2, 1); 
  164.         string str4 = str.Substring(3, 1); 
  165.         string rstring = ""
  166.         rstring += ConvertChinese(str1) + "仟"
  167.         rstring += ConvertChinese(str2) + "佰"
  168.         rstring += ConvertChinese(str3) + "拾"
  169.         rstring += ConvertChinese(str4); 
  170.         rstring = rstring.Replace("零仟""零"); 
  171.         rstring = rstring.Replace("零佰""零"); 
  172.         rstring = rstring.Replace("零拾""零"); 
  173.         rstring = rstring.Replace("零零""零"); 
  174.         rstring = rstring.Replace("零零""零"); 
  175.         rstring = rstring.Replace("零零""零"); 
  176.         return rstring; 
  177.     } 
  178.     ///  
  179.     /// 转换三位数字 
  180.     ///  
  181.     public string Convert3Digit(string str) 
  182.     { 
  183.         string str1 = str.Substring(0, 1); 
  184.         string str2 = str.Substring(1, 1); 
  185.         string str3 = str.Substring(2, 1); 
  186.         string rstring = ""
  187.         rstring += ConvertChinese(str1) + "佰"
  188.         rstring += ConvertChinese(str2) + "拾"
  189.         rstring += ConvertChinese(str3); 
  190.         rstring = rstring.Replace("零佰""零"); 
  191.         rstring = rstring.Replace("零拾""零"); 
  192.         rstring = rstring.Replace("零零""零"); 
  193.         rstring = rstring.Replace("零零""零"); 
  194.         return rstring; 
  195.     } 
  196.     ///  
  197.     /// 转换二位数字 
  198.     ///  
  199.     public string Convert2Digit(string str) 
  200.     { 
  201.         string str1 = str.Substring(0, 1); 
  202.         string str2 = str.Substring(1, 1); 
  203.         string rstring = ""
  204.         rstring += ConvertChinese(str1) + "拾"
  205.         rstring += ConvertChinese(str2); 
  206.         rstring = rstring.Replace("零拾""零"); 
  207.         rstring = rstring.Replace("零零""零"); 
  208.         return rstring; 
  209.     } 
  210.     ///  
  211.     /// 将一位数字转换成中文大写数字 
  212.     ///  
  213.     public string ConvertChinese(int num) 
  214.     { 
  215.         //"零壹贰叁肆伍陆柒捌玖拾佰仟萬億圆整角分" 
  216.         //string cstr = ""; 
  217.         //switch (str) 
  218.         //{ 
  219.         //    case "0": cstr = "零"; break; 
  220.         //    case "1": cstr = "壹"; break; 
  221.         //    case "2": cstr = "贰"; break; 
  222.         //    case "3": cstr = "叁"; break; 
  223.         //    case "4": cstr = "肆"; break; 
  224.         //    case "5": cstr = "伍"; break; 
  225.         //    case "6": cstr = "陆"; break; 
  226.         //    case "7": cstr = "柒"; break; 
  227.         //    case "8": cstr = "捌"; break; 
  228.         //    case "9": cstr = "玖"; break; 
  229.         //} 
  230.         //return (cstr); 
  231.         return "零壹贰叁肆伍陆柒捌玖"[num].ToString(); 
  232.     } 

 

被阅939次, 0投一票金额
  • 看完了要说点啥么?
  • 昵称 (不填说不了话)
  • 信箱地址 (不会被公开,但是不填也说不了话)
  • 网址 (这个不填也成)
Powered by MiniBoke v2.0.0.8 Build 0828

Copyright © 2008 开源吧!. All rights reserved.

粤ICP备07500939号