數字轉中文大寫金額

  不知道你們有沒有遇到須要將數字轉成中文大寫的須要,以下圖spa

  這是轉換的代碼,有須要的的Ctr+C吧,不謝。code

public class PublicConvert
    {
        private static String[] Ls_ShZ = { "", "", "", "", "", "", "", "", "", "", "" };
        private static String[] Ls_DW_Zh = { "", "", "", "", "", "", "", "", "", "", "", "", "" };
        private static String[] Num_DW = { "", "", "", "", "", "", "", "", "", "", "", "", "" };
        private static String[] Ls_DW_X = { "", "" };

        /// <summary>
        /// 金額小寫轉中文大寫。
        /// 整數支持到萬億;小數部分支持到分(超過兩位將進行Banker舍入法處理)
        /// </summary>
        /// <param name="Num">須要轉換的雙精度浮點數</param>
        /// <returns>轉換後的字符串</returns>
        public static String NumGetStr(Double Num)
        {
            Boolean iXSh_bool = false;//是否含有小數,默認沒有(0則視爲沒有)
            Boolean iZhSh_bool = true;//是否含有整數,默認有(0則視爲沒有)

            string NumStr;//整個數字字符串
            string NumStr_Zh;//整數部分
            string NumSr_X = "";//小數部分
            string NumStr_DQ;//當前的數字字符
            string NumStr_R = "";//返回的字符串

            Num = Math.Round(Num, 2);//四捨五入取兩位

            //各類非正常狀況處理
            if (Num < 0)
                return "不轉換欠條";
            if (Num > 9999999999999.99)
                return "很難想象誰會有這麼多錢!";
            if (Num == 0)
                return Ls_ShZ[0];

            //判斷是否有整數
            if (Num < 1.00)
                iZhSh_bool = false;

            NumStr = Num.ToString();

            NumStr_Zh = NumStr;//默認只有整數部分
            if (NumStr_Zh.Contains("."))
            {//分開整數與小數處理
                NumStr_Zh = NumStr.Substring(0, NumStr.IndexOf("."));
                NumSr_X = NumStr.Substring((NumStr.IndexOf(".") + 1), (NumStr.Length - NumStr.IndexOf(".") - 1));
                iXSh_bool = true;
            }


            if (NumSr_X == "" || int.Parse(NumSr_X) <= 0)
            {//判斷是否含有小數部分
                iXSh_bool = false;
            }

            if (iZhSh_bool)
            {//整數部分處理
                NumStr_Zh = Reversion_Str(NumStr_Zh);//反轉字符串

                for (int a = 0; a < NumStr_Zh.Length; a++)
                {//整數部分轉換
                    NumStr_DQ = NumStr_Zh.Substring(a, 1);
                    if (int.Parse(NumStr_DQ) != 0)
                        NumStr_R = Ls_ShZ[int.Parse(NumStr_DQ)] + Ls_DW_Zh[a] + NumStr_R;
                    else if (a == 0 || a == 4 || a == 8)
                    {
                        if (NumStr_Zh.Length > 8 && a == 4)
                            continue;
                        NumStr_R = Ls_DW_Zh[a] + NumStr_R;
                    }
                    else if (int.Parse(NumStr_Zh.Substring(a - 1, 1)) != 0)
                        NumStr_R = Ls_ShZ[int.Parse(NumStr_DQ)] + NumStr_R;

                }

                if (!iXSh_bool)
                    return NumStr_R + "";

                //NumStr_R += "零";
            }

            for (int b = 0; b < NumSr_X.Length; b++)
            {//小數部分轉換
                NumStr_DQ = NumSr_X.Substring(b, 1);
                if (int.Parse(NumStr_DQ) != 0)
                    NumStr_R += Ls_ShZ[int.Parse(NumStr_DQ)] + Ls_DW_X[b];
                else if (b != 1 && iZhSh_bool)
                    NumStr_R += Ls_ShZ[int.Parse(NumStr_DQ)];
            }

            return NumStr_R;

        }

        public static string Reversion_Str(string input)
        {
            char[] array = input.ToCharArray();
            IEnumerable<char> cs = array.Reverse<char>();
           char[] array1 = cs.ToArray<char>(); string result = new string(array1);   
        }
    }
相關文章
相關標籤/搜索