当前位置:首 页 > 攻城湿 >.Net & C# > 查看文章

C#转换人民币大小金额

.Net & C# 你是第1872个围观者 0条评论 供稿者: 标签:
/// <summary>   
        /// 转换人民币大小金额   
        /// </summary>   
        /// <param name="num"/>金额   
        /// <returns>返回大写形式</returns>   
        public static string GetChineseMoney(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值中取出的值   
 
            if (DbUtils.Language.ToLower() == "en") return "";  
            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;  
        } 
这家伙很懒,什么都没写!

—— zhaorong

zhaorong
你可能也喜欢Related Posts
众说纷纭Comments
大眼 可爱 大笑 坏笑 害羞 发怒 折磨 快哭了 大哭 白眼 晕 流汗 困 腼腆 惊讶 憨笑 色 得意 骷髅 囧 睡觉 眨眼 亲亲 疑问 闭嘴 难过 淡定 抗议 鄙视 猪头
小提示:直接粘贴图片到输入框试试
努力发送中...
  • 评论最多
  • 最新评论
  • 随机文章
footer logo
未经许可请勿自行使用、转载、修改、复制、发行、出售、发表或以其它方式利用本网站之内容
Copyright © zhaorong All Rights Reserved. 滇ICP备15006105号-1