ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C#中小写人民币转大写

2019-03-17 21:38:46  阅读:285  来源: 互联网

标签:shu SHU1 C# 中小 大写 ZIFU Length SHUZI tmp1


  /// <summary>
        /// 转换成大写人民币
        /// </summary>
        /// <param name="myMoney"></param>
        /// <returns></returns>
        public static string toRmb(System.Decimal myMoney)
        {
            string SHUZI;  //保存數字小寫
            string ZIFU;   //保存數字轉換后的結果
            int tmp1;  //臨時變量
            string[] shu = new String[14];
            string[] SHU1 = new String[10];

            shu[13] = "仟";
            shu[12] = "佰"; shu[11] = "拾"; shu[10] = "亿";
            shu[9] = "仟"; shu[8] = "佰"; shu[7] = "拾";
            shu[6] = "万"; shu[5] = "仟"; shu[4] = "佰";
            shu[3] = "拾"; shu[2] = "元"; shu[1] = "角";
            shu[0] = "分";

            SHU1[0] = "零"; SHU1[1] = "壹"; SHU1[2] = "贰";
            SHU1[3] = "叁"; SHU1[4] = "肆"; SHU1[5] = "伍";
            SHU1[6] = "陆"; SHU1[7] = "柒"; SHU1[8] = "捌";
            SHU1[9] = "玖";

            bool flag;
            //            bool zeroFlag;
            //            zeroFlag=false;

            //最大值為9999,9999,9999.99
            if (myMoney > Convert.ToDecimal(999999999999.99))//過大時返回原來值
            {
                return Convert.ToString(myMoney) + "元整";
            }
            else if (myMoney == Convert.ToDecimal(0))
            {
                return "零元整";
            }
            else
            {
                flag = false;
                SHUZI = Convert.ToString(myMoney * 100);//先將數值轉化
                if (SHUZI.Substring(0, 1) == "-")//為負數時去掉負號
                {
                    SHUZI = SHUZI.Substring(1);
                }

                if (SHUZI.IndexOf(".") > 0)//當小數位過兩位時,去掉小數位
                {
                    SHUZI = SHUZI.Substring(0, SHUZI.IndexOf("."));
                }

                ZIFU = "";
                tmp1 = 0;  //從最首位開始轉化
                while (tmp1 < SHUZI.Length)
                {
                    if (SHUZI.Substring(tmp1, 1) != "0")//當數字位不為零時,得到當前的 漢數 和 幣字
                    {
                        if (flag)
                            ZIFU += "零";
                        ZIFU = ZIFU + SHU1[Convert.ToInt32(SHUZI.Substring(tmp1, 1))] + shu[SHUZI.Length - tmp1 - 1];
                        flag = false;
                    }

                    else//當數字位為零時
                    {
                        flag = true;
                        if (tmp1 == SHUZI.Length - 3)//最未位的單位為 元
                        {
                            ZIFU = ZIFU + shu[2];
                        }

                        if (tmp1 == SHUZI.Length - 7) //以 萬 記
                        {
                            if (ZIFU.Substring(ZIFU.Length - 1, 1) != shu[10])
                            {
                                ZIFU = ZIFU + shu[6];
                                flag = false;
                            }
                        }

                        if (tmp1 == SHUZI.Length - 11)
                        {
                            ZIFU = ZIFU + shu[10];
                            flag = false;
                        }
                    }

                    tmp1 = tmp1 + 1;
                }
            }

            int dotIndex = myMoney.ToString().IndexOf(".");
            if (dotIndex > 0)        //判断是否包含小数点
            {
                String partStr = myMoney.ToString().Substring(dotIndex + 1);
                if (partStr.TrimEnd('0').Length > 1)    //如小数位数大于1(角、分),则不包含最后的“整”。
                {
                    return ZIFU;
                }
                else
                {
                    return ZIFU + "整";
                }
            }
            else
            {
                return ZIFU + "整";
            }
        }

 

标签:shu,SHU1,C#,中小,大写,ZIFU,Length,SHUZI,tmp1
来源: https://www.cnblogs.com/wangjp-1233/p/10548993.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有