博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

金额转换,把金额转换成为汉字大写金额!

Posted on 2011-02-19 22:05  CodeNote  阅读(484)  评论(0编辑  收藏  举报

感谢Asp.Net技术前瞻--张明Blog

原文地址

namespace BaseSystemFramework
{
    using System;
    public class Capitalization
    {
        public Capitalization()
        {
        }

        //金额数字(小写)转换成文字(大写) 
        private static string[] shuzi={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
        private static string[] danwei={"分","角","元","拾","佰","仟","万","拾","佰","仟","亿","拾","佰","仟"};

        /**//// <summary>
        /// 金额小写转换成大写
        /// </summary>
        /// <param name="payment"></param>
        /// <returns></returns>
        public static string MoneyConvert(double payment)
        {
            string money;
            int ipayment, itemp, num, length, danweinum;
            string spayment, stemp;
            bool yuan, wan, yi, zero;

            yi = false;
            wan = false;
            yuan = false;
            zero = false;
            money = "";
            ipayment = (int)Math.Floor(payment*100+0.5);   //转换成分并四舍五入
            if( ipayment > 0 )
            {
                spayment = ipayment.ToString();    //转换成字符串
                length = spayment.Length;
                if( length > 0 )
                {
                    money = "";
                    num = length - 1;
                    danweinum = 0;
                    while( num >= 0 )
                    {
                        stemp = spayment.Substring( num, 1 );
                        itemp = int.Parse( stemp );
                        if( itemp > 0 )
                        {
                            if( money.Length > 0 )
                            {
                                stemp = shuzi[itemp] + danwei[danweinum];
                                if( danweinum == 10 )
                                    yi = true;
                                if( danweinum == 6 )
                                    wan = true;
                                if( danweinum == 2 )
                                    yuan = true;
                                if( danweinum > 10 )
                                    if( !yi )
                                    {
                                        stemp = stemp + "亿";
                                        yi = true;
                                    }
                                if( danweinum > 6 )
                                    if( !wan )
                                    {
                                        stemp = stemp + "万";
                                        wan = true;
                                    }
                                if( danweinum > 2 )
                                    if( !yuan )
                                    {
                                        stemp = stemp + "元";
                                        yuan = true;
                                    }
                                money = stemp + money;
                            }
                            else
                            {
                                if( danweinum > 0 )
                                {
                                    stemp = shuzi[itemp] + danwei[danweinum];
                                    if( danweinum == 10 )
                                        yi = true;
                                    if( danweinum == 6 )
                                        wan = true;
                                    if( danweinum == 2 )
                                        yuan = true;
                                    if( danweinum > 10 )
                                        if( !yi )
                                        {
                                            stemp = stemp + "亿";
                                            yi = true;
                                        }
                                    if( danweinum > 6 )
                                        if( !wan )
                                        {
                                            stemp = stemp + "万";
                                            wan = true;
                                        }
                                    if( danweinum > 2 )
                                        if( !yuan )
                                        {
                                            stemp = stemp + "元";
                                            yuan = true;
                                        }
                                    money = stemp + "整";
                                }
                                else
                                    money = shuzi[itemp] + danwei[danweinum];
                            }
                            zero = false;
                        }
                        else
                        {
                            if( money.Length > 0 )
                                if( !zero )
                                {
                                    money = shuzi[itemp] + money;
                                }
                            zero = true;
                        }
                        num--;
                        danweinum++;
                    }
                }
            }
            return money;
        }

        /**//// <summary>
        /// 金额小写转换成大写
        /// </summary>
        /// <param name="payment"></param>
        /// <returns></returns>
        public static string MoneyConvert( string payment )
        {
            if( payment.Length != 0)
                return MoneyConvert( Convert.ToDouble( payment ) );
            else
                return MoneyConvert( Convert.ToDouble( "0" ) );
        }
    }
}