zoukankan      html  css  js  c++  java
  • 小写金额转中文大写金额

            private static String[] DX_Num = { " 零", " 壹", " 贰", " 叁", " 肆", " 伍", " 陆", " 柒", " 捌", " 玖" };
            private static String[] DX_Yuan = { " 元", " 拾", " 佰", " 仟", " 万", " 拾", " 佰", " 仟", " 亿", " 拾", " 佰", " 仟", " 万" };
            private static String[] DW_X = { " 角", " 分" };
    
            /// <summary>
            /// 金额小写转中文大写。
            /// 整数支持到万亿;小数部分支持到分(超过两位将进行Banker舍入法处理)
            /// </summary>
            /// <param name="Num">需要转换的双精度浮点数</param>
            /// <returns>转换后的字符串</returns>
            public static String NumGetStr(Double Num)
            {
                string NumStr;//整个数字字符串
                string NumStr_Zh;//整数部分
                string NumSr_X = "";//小数部分
                string NumStr_DQ;//当前的数字字符
                string NumStr_R = "";//返回的字符串
    
                Num = Math.Round(Num, 2);//四舍五入取两位
                //各种非正常情况处理
                if (Num < 0)
                    return "转换失败";
                else if (Num > 9999999999999.99)
                    return "金额过大,无法转换";
                else if (Num == 0)
                    return DX_Num[0] + DX_Yuan[0];
                else
                {
                    NumStr = Num.ToString();
                    //分开整数与小数处理
                    if (NumStr.IndexOf(".") != -1)
                    {
                        NumStr_Zh = NumStr.Substring(0, NumStr.IndexOf("."));
                        NumSr_X = NumStr.Substring(NumStr.IndexOf(".") + 1);
                    }
                    else
                    {
                        NumStr_Zh = NumStr;
                    }
                    //判断是否有整数部分
                    if (int.Parse(NumStr_Zh) > 0)
                    {
                        int len = NumStr_Zh.Length - 1;
                        //整数部分转换
                        for (int a = 0; a <= len; a++)
                        {
                            NumStr_DQ = NumStr_Zh.Substring(a, 1);
                            if (int.Parse(NumStr_DQ) != 0)
                            {
                                NumStr_R += DX_Num[int.Parse(NumStr_DQ)] + DX_Yuan[len - a];
                            }
                            else
                            {
                                if ((len - a) == 0 || (len - a) == 4 || (len - a) == 8)
                                    NumStr_R += DX_Yuan[len - a];
                                if ((a + 1) <= len)
                                {
                                    NumStr_DQ = NumStr_Zh.Substring((a + 1), 1);
                                    if (int.Parse(NumStr_DQ) == 0)
                                        continue;
                                    else
                                        NumStr_R += DX_Num[0];
                                }
                            }
                        }
                    }
                    //判断是否含有小数部分
                    if (NumSr_X != "" && int.Parse(NumSr_X) > 0)
                    {
                        //小数部分转换
                        for (int b = 0; b < NumSr_X.Length; b++)
                        {
                            NumStr_DQ = NumSr_X.Substring(b, 1);
                            if (int.Parse(NumStr_DQ) != 0)
                                NumStr_R += DX_Num[int.Parse(NumStr_DQ)] + DW_X[b];
                            else
                            {
                                if ((b + 1) < NumSr_X.Length)
                                {
                                    NumStr_DQ = NumSr_X.Substring((b + 1), 1);
                                    if (int.Parse(NumStr_DQ) == 0)
                                        continue;
                                }
                                if (b != (NumSr_X.Length - 1))
                                    NumStr_R += DX_Num[0];
                            }
                        }
                    }
                    else
                    {
                        NumStr_R += "";
                    }
                    return NumStr_R;
                }
            }
  • 相关阅读:
    java mail
    hibernate 批量处理数据
    动态规划0—1背包问题
    FreeCMS开发过程问题总结(持续更新中)
    RapeLay(电车之狼R)的结局介绍 (隐藏结局攻略)
    笔记本键盘输入错乱,字母都变成数字了
    眼下最好的JSP分页技术
    在一个字符串中找到第一个仅仅出现一次的字符
    央行力保首套房贷背后暗藏何种玄机?
    HDU2149-Good Luck in CET-4 Everybody!(博弈,打表找规律)
  • 原文地址:https://www.cnblogs.com/ahhswyf/p/3433419.html
Copyright © 2011-2022 走看看