小写金额转中文大写


此方法是将小写的阿拉伯数字金额,转成中文大写,便于开发某些账单式页面时使用。

     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;
            }
        }

优质内容筛选与推荐>>
1、七、集成学习
2、面试系列21 为什么要进行系统拆分
3、redis高级 --------- 1
4、Cannot be serialized to JSON because its IsReference setting is 'True'
5、(C#)利用反射动态调用类成员[转载]


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号