当前位置: 移动技术网 > IT编程>开发语言>.net > 数字转中文大写金额

数字转中文大写金额

2019年06月01日  | 移动技术网IT编程  | 我要评论

电视机黑屏,杭钢幼儿园,开往侏罗纪的浪漫

  不知道大家有没有遇到需要将数字转成中文大写的需要,如下图

  这是转换的代码,有需要的的ctr+c吧,不谢。

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

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网