close

20170419_【應用】數字轉國字

 

也是參考別人寫的。詳細在哪忘記了

 

【後端】

 /// <summary>

       /// 轉換大小金額

       /// </summary>

 

       public static string CmycurD(decimal num)

       {

           string str1 = "零壹貳參肆伍陸柒捌玖";            //0-9所對應的數字

           string str2 = "萬仟佰拾億仟佰拾萬仟佰拾元"; //數字為所對應的國字

           string str3 = "";    //從原num值中取出的值

           string str4 = "";    //數字的字符串形式

           string str5 = "";  //大寫金額形式

           int i;    //循環

           int j;    //num的值乘以100的字符串長度

           string ch1 = "";    //國字

           string ch2 = "";    //國字

           int nzero = 0;  //計算有幾個0

           int temp;            //從原num值中取出的值

 

           num = Math.Round(Math.Abs(num), 2);    //將num取绝對值並四舍五入取2位小數

           str4 = ((long)(num * 100)).ToString();        //將num乘100並轉換成字符串形式

           j = str4.Length;      //找出最高位

           if (j > 15) { return "溢出"; }

           str2 = str2.Substring(15 - j);   //取出對應位數的str2的值。如:200.55,j為5所以str2=佰拾元

 

           //取出每一位需要轉換的值

           for (i = 0; i < j; i++)

           {

               str3 = str4.Substring(i, 1);          //取出需轉換的某一位的值

               temp = Convert.ToInt32(str3);      //轉換為數字

               if (i != (j - 3) && i != (j - 7) && i != (j - 11) && i != (j - 15))

               {

                   //當所取位數不為元、萬、億、萬億上的數字時

                   if (str3 == "0")

                   {

                       ch1 = "";

                       ch2 = "";

                       nzero = nzero + 1;

                   }

                   else

                   {

                       if (str3 != "0" && nzero != 0)

                       {

                           ch1 = "零" + str1.Substring(temp * 1, 1);

                           ch2 = str2.Substring(i, 1);

                           nzero = 0;

                       }

                       else

                       {

                           ch1 = str1.Substring(temp * 1, 1);

                           ch2 = str2.Substring(i, 1);

                           nzero = 0;

                       }

                   }

               }

               else

               {

                   //該位是萬億,億,萬,元位等關鍵位

                   if (str3 != "0" && nzero != 0)

                   {

                       ch1 = "零" + str1.Substring(temp * 1, 1);

                       ch2 = str2.Substring(i, 1);

                       nzero = 0;

                   }

                   else

                   {

                       if (str3 != "0" && nzero == 0)

                       {

                           ch1 = str1.Substring(temp * 1, 1);

                           ch2 = str2.Substring(i, 1);

                           nzero = 0;

                       }

                       else

                       {

                           if (str3 == "0" && nzero >= 3)

                           {

                               ch1 = "";

                               ch2 = "";

                               nzero = nzero + 1;

                           }

                           else

                           {

                               if (j >= 11)

                               {

                                   ch1 = "";

                                   nzero = nzero + 1;

                               }

                               else

                               {

                                   ch1 = "";

                                   ch2 = str2.Substring(i, 1);

                                   nzero = nzero + 1;

                               }

                           }

                       }

                   }

               }

               if (i == (j - 11) || i == (j - 3))

               {

                   //如果該位是億位或元位

                   ch2 = str2.Substring(i, 1);

               }

               str5 = str5 + ch1 + ch2;

 

               if (i == j - 1 && str3 == "0")

               {

                   //最後一位(分)為0时,加上“整”

                   str5 = str5 + '整';

               }

           }

           if (num == 0)

           {

               str5 = "零元整";

           }

           return str5;

       }

 

arrow
arrow
    文章標籤
    金額轉換
    全站熱搜
    創作者介紹
    創作者 Uncontrol 的頭像
    Uncontrol

    Uncontrol

    Uncontrol 發表在 痞客邦 留言(0) 人氣()