解决方案 »

  1.   


    /// <summary>金额转大写
        /// 
        /// </summary>
        public class MoneyConvertChinese
        {
            /// <summary>金额转大写
            /// 
            /// </summary>
            /// <param name="LowerMoney"></param>
            /// <returns></returns>
            public string MoneyToChinese(string LowerMoney)
            {
                string functionReturnValue = null;
                bool IsNegative = false; // 是否是负数
                if (LowerMoney.Trim().Substring(0, 1) == "-")
                {
                    // 是负数则先转为正数
                    LowerMoney = LowerMoney.Trim().Remove(0, 1);
                    IsNegative = true;
                }
                string strLower = null;
                string strUpart = null;
                string strUpper = null;
                int iTemp = 0;
                // 保留两位小数 123.489→123.49  123.4→123.4
                LowerMoney = Math.Round(double.Parse(LowerMoney), 2).ToString();
                if (LowerMoney.IndexOf(".") > 0)
                {
                    if (LowerMoney.IndexOf(".") == LowerMoney.Length - 2)
                    {
                        LowerMoney = LowerMoney + "0";
                    }
                }
                else
                {
                    LowerMoney = LowerMoney + ".00";
                }
                strLower = LowerMoney;
                iTemp = 1;
                strUpper = "";
                while (iTemp <= strLower.Length)
                {
                    switch (strLower.Substring(strLower.Length - iTemp, 1))
                    {
                        case ".":
                            strUpart = "圆";
                            break;
                        case "0":
                            strUpart = "零";
                            break;
                        case "1":
                            strUpart = "壹";
                            break;
                        case "2":
                            strUpart = "贰";
                            break;
                        case "3":
                            strUpart = "叁";
                            break;
                        case "4":
                            strUpart = "肆";
                            break;
                        case "5":
                            strUpart = "伍";
                            break;
                        case "6":
                            strUpart = "陆";
                            break;
                        case "7":
                            strUpart = "柒";
                            break;
                        case "8":
                            strUpart = "捌";
                            break;
                        case "9":
                            strUpart = "玖";
                            break;
                    }                switch (iTemp)
                    {
                        case 1:
                            strUpart = strUpart + "分";
                            break;
                        case 2:
                            strUpart = strUpart + "角";
                            break;
                        case 3:
                            strUpart = strUpart + "";
                            break;
                        case 4:
                            strUpart = strUpart + "";
                            break;
                        case 5:
                            strUpart = strUpart + "拾";
                            break;
                        case 6:
                            strUpart = strUpart + "佰";
                            break;
                        case 7:
                            strUpart = strUpart + "仟";
                            break;
                        case 8:
                            strUpart = strUpart + "万";
                            break;
                        case 9:
                            strUpart = strUpart + "拾";
                            break;
                        case 10:
                            strUpart = strUpart + "佰";
                            break;
                        case 11:
                            strUpart = strUpart + "仟";
                            break;
                        case 12:
                            strUpart = strUpart + "亿";
                            break;
                        case 13:
                            strUpart = strUpart + "拾";
                            break;
                        case 14:
                            strUpart = strUpart + "佰";
                            break;
                        case 15:
                            strUpart = strUpart + "仟";
                            break;
                        case 16:
                            strUpart = strUpart + "万";
                            break;
                        default:
                            strUpart = strUpart + "";
                            break;
                    }                strUpper = strUpart + strUpper;
                    iTemp = iTemp + 1;
                }            strUpper = strUpper.Replace("零拾", "零");
                strUpper = strUpper.Replace("零佰", "零");
                strUpper = strUpper.Replace("零仟", "零");
                strUpper = strUpper.Replace("零零零", "零");
                strUpper = strUpper.Replace("零零", "零");
                strUpper = strUpper.Replace("零角零分", "整");
                strUpper = strUpper.Replace("零分", "整");
                strUpper = strUpper.Replace("零角", "零");
                strUpper = strUpper.Replace("零亿零万零圆", "亿圆");
                strUpper = strUpper.Replace("亿零万零圆", "亿圆");
                strUpper = strUpper.Replace("零亿零万", "亿");
                strUpper = strUpper.Replace("零万零圆", "万圆");
                strUpper = strUpper.Replace("零亿", "亿");
                strUpper = strUpper.Replace("零万", "万");
                strUpper = strUpper.Replace("零圆", "圆");
                strUpper = strUpper.Replace("零零", "零");            // 对壹圆以下的金额的处理
                if (strUpper.Substring(0, 1) == "圆")
                {
                    strUpper = strUpper.Substring(1, strUpper.Length - 1);
                }
                if (strUpper.Substring(0, 1) == "零")
                {
                    strUpper = strUpper.Substring(1, strUpper.Length - 1);
                }
                if (strUpper.Substring(0, 1) == "角")
                {
                    strUpper = strUpper.Substring(1, strUpper.Length - 1);
                }
                if (strUpper.Substring(0, 1) == "分")
                {
                    strUpper = strUpper.Substring(1, strUpper.Length - 1);
                }
                if (strUpper.Substring(0, 1) == "整")
                {
                    strUpper = "零圆整";
                }
                functionReturnValue = strUpper;            if (IsNegative == true)
                {
                    return "负" + functionReturnValue;
                }
                else
                {
                    return functionReturnValue;
                }
            }
        }
    测试代码:        static void Main(string[] args)
            {
                Console.Write("请输入要转成大写的数字:");
                string str = Console.ReadLine();
                Console.WriteLine("大写:" + new MoneyConvertChinese().MoneyToChinese(str));
                Console.ReadLine();
            }
      

  2.   

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;namespace WinUI
    {
        class qz
        {
            public string ConvertSum(string str)
            {
                if (!IsPositveDecimal(str))
                    return "输入的不是正数字!";
                if (Double.Parse(str) > 999999999999.99)
                    return "数字太大,无法换算,请输入一万亿元以下的金额";
                char[] ch = new char[1];
                ch[0] = '.'; //小数点 
                string[] splitstr = null; //定义按小数点分割后的字符串数组 
                splitstr = str.Split(ch[0]);//按小数点分割字符串 
                if (splitstr.Length == 1) //只有整数部分 
                    return ConvertData(str) + "圆整";
                else //有小数部分 
                {
                    string rstr;
                    rstr = ConvertData(splitstr[0]) + "圆";//转换整数部分 
                    rstr += ConvertXiaoShu(splitstr[1]);//转换小数部分 
                    return rstr;
                }
            }        public bool IsPositveDecimal(string str)
            {
                Decimal d;
                try
                {
                    d = Decimal.Parse(str);
                }
                catch (Exception)
                {
                    return false;
                }
                if (d >= 0)
                    return true;
                else
                    return false;
            }        public string ConvertData(string str)
            {
                string tmpstr = "";
                string rstr = "";
                int strlen = str.Length;
                if (strlen <= 4)//数字长度小于四位 
                {
                    rstr = ConvertDigit(str);            }
                else
                {
                    if (strlen <= 8)//数字长度大于四位,小于八位 
                    {
                        tmpstr = str.Substring(strlen - 4, 4);//先截取最后四位数字 
                        rstr = ConvertDigit(tmpstr);//转换最后四位数字 
                        tmpstr = str.Substring(0, strlen - 4);//截取其余数字 
                        //将两次转换的数字加上萬后相连接 
                        rstr = String.Concat(ConvertDigit(tmpstr) + "萬", rstr);
                        rstr = rstr.Replace("零零", "零");
                    }
                    else
                        if (strlen <= 12)//数字长度大于八位,小于十二位 
                        {
                            tmpstr = str.Substring(strlen - 4, 4);//先截取最后四位数字 
                            rstr = ConvertDigit(tmpstr);//转换最后四位数字 
                            tmpstr = str.Substring(strlen - 8, 4);//再截取四位数字 
                            rstr = String.Concat(ConvertDigit(tmpstr) + "萬", rstr);
                            tmpstr = str.Substring(0, strlen - 8);
                            rstr = String.Concat(ConvertDigit(tmpstr) + "億", rstr);
                            rstr = rstr.Replace("零億", "億");
                            rstr = rstr.Replace("零萬", "零");
                            rstr = rstr.Replace("零零", "零");
                            rstr = rstr.Replace("零零", "零");
                        }
                }
                strlen = rstr.Length;
                if (strlen >= 2)
                {
                    switch (rstr.Substring(strlen - 2, 2))
                    {
                        case "佰零": rstr = rstr.Substring(0, strlen - 2) + "佰"; break;
                        case "仟零": rstr = rstr.Substring(0, strlen - 2) + "仟"; break;
                        case "萬零": rstr = rstr.Substring(0, strlen - 2) + "萬"; break;
                        case "億零": rstr = rstr.Substring(0, strlen - 2) + "億"; break;
                    }
                }
                return rstr;
            }        public string ConvertXiaoShu(string str)
            {
                int strlen = str.Length;
                string rstr;
                if (strlen == 1)
                {
                    rstr = ConvertChinese(str) + "角";
                    return rstr;
                }
                else
                {
                    string tmpstr = str.Substring(0, 1);
                    rstr = ConvertChinese(tmpstr) + "角";
                    tmpstr = str.Substring(1, 1);
                    rstr += ConvertChinese(tmpstr) + "分";
                    rstr = rstr.Replace("零分", "");
                    rstr = rstr.Replace("零角", "");
                    return rstr;
                }
            }        public string ConvertDigit(string str)
            {
                int strlen = str.Length;
                string rstr = "";
                switch (strlen)
                {
                    case 1: rstr = ConvertChinese(str); break;
                    case 2: rstr = Convert2Digit(str); break;
                    case 3: rstr = Convert3Digit(str); break;
                    case 4: rstr = Convert4Digit(str); break;
                }
                rstr = rstr.Replace("拾零", "拾");
                strlen = rstr.Length;
                return rstr;
            }
            /// 
            /// 转换四位数字 
            /// 
            public string Convert4Digit(string str)
            {
                string str1 = str.Substring(0, 1);
                string str2 = str.Substring(1, 1);
                string str3 = str.Substring(2, 1);
                string str4 = str.Substring(3, 1);
                string rstring = "";
                rstring += ConvertChinese(str1) + "仟";
                rstring += ConvertChinese(str2) + "佰";
                rstring += ConvertChinese(str3) + "拾";
                rstring += ConvertChinese(str4);
                rstring = rstring.Replace("零仟", "零");
                rstring = rstring.Replace("零佰", "零");
                rstring = rstring.Replace("零拾", "零");
                rstring = rstring.Replace("零零", "零");
                rstring = rstring.Replace("零零", "零");
                rstring = rstring.Replace("零零", "零");
                return rstring;
            }        /// 
            /// 转换三位数字 
            /// 
            public string Convert3Digit(string str)
            {
                string str1 = str.Substring(0, 1);
                string str2 = str.Substring(1, 1);
                string str3 = str.Substring(2, 1);
                string rstring = "";
                rstring += ConvertChinese(str1) + "佰";
                rstring += ConvertChinese(str2) + "拾";
                rstring += ConvertChinese(str3);
                rstring = rstring.Replace("零佰", "零");
                rstring = rstring.Replace("零拾", "零");
                rstring = rstring.Replace("零零", "零");
                rstring = rstring.Replace("零零", "零");
                return rstring;
            }        /// 
            /// 转换二位数字 
            /// 
            public string Convert2Digit(string str)
            {
                string str1 = str.Substring(0, 1);
                string str2 = str.Substring(1, 1);
                string rstring = "";
                rstring += ConvertChinese(str1) + "拾";
                rstring += ConvertChinese(str2);
                rstring = rstring.Replace("零拾", "零");
                rstring = rstring.Replace("零零", "零");
                return rstring;
            }        /// 
            /// 将一位数字转换成中文大写数字 
            /// 
            public string ConvertChinese(string str)
            {
                //"零壹贰叁肆伍陆柒捌玖拾佰仟萬億圆整角分" 
                string cstr = "";
                switch (str)
                {
                    case "0": cstr = "零"; break;
                    case "1": cstr = "壹"; break;
                    case "2": cstr = "贰"; break;
                    case "3": cstr = "叁"; break;
                    case "4": cstr = "肆"; break;
                    case "5": cstr = "伍"; break;
                    case "6": cstr = "陆"; break;
                    case "7": cstr = "柒"; break;
                    case "8": cstr = "捌"; break;
                    case "9": cstr = "玖"; break;
                }
                return (cstr);
            }
        }}
      

  3.   

    参考这个...
    http://topic.csdn.net/u/20080829/14/78b8f797-9e5b-4b77-a32f-9c1c90368265.html?74658
      

  4.   

    http://www.cnblogs.com/xue5ya/archive/2009/04/04/1429477.html
    完全符合你要求
      

  5.   

    http://topic.csdn.net/u/20090714/19/463928cd-946b-4594-8e0c-39febe87eb13.html?36449