zoukankan      html  css  js  c++  java
  • 转换人民币大小金额

    /// <summary>
            /// 转换人民币大小金额
            /// </summary>
            /// <param name="num">金额</param>
            /// <returns>返回大写形式</returns>
            public 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;  //用来计算连续的零值是几个
                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;
            }
    
            /**/
            /// <summary>
            /// 一个重载,将字符串先转换成数字在调用CmycurD(decimal num)
            /// </summary>
            /// <param name="num">用户输入的金额,字符串形式未转成decimal</param>
            /// <returns></returns>
            public string CmycurD(string numstr)
            {
                try
                {
                    decimal num = Convert.ToDecimal(numstr);
                    return CmycurD(num);
                }
                catch
                {
                    return "非数字形式!";
                }
            }
  • 相关阅读:
    Leetcode Excel Sheet Column Number
    AlgorithmsI PA2: Randomized Queues and Deques Subset
    AlgorithmsI PA2: Randomized Queues and Deques RandomizedQueue
    AlgorithmsI PA2: Randomized Queues and Deques Deque
    AlgorithmsI Programming Assignment 1: PercolationStats.java
    hdu多校第四场 1003 (hdu6616) Divide the Stones 机智题
    hdu多校第四场 1007 (hdu6620) Just an Old Puzzle 逆序对
    hdu多校第四场1001 (hdu6614) AND Minimum Spanning Tree 签到
    hdu多校第三场 1007 (hdu6609) Find the answer 线段树
    hdu多校第三场 1006 (hdu6608) Fansblog Miller-Rabin素性检测
  • 原文地址:https://www.cnblogs.com/happinesshappy/p/5025207.html
Copyright © 2011-2022 走看看