中文转换成数字金额C#【转】

原文地址:http://shinylife.net/blog/article.asp?id=1064

///
        /// 中文转换成数字金额
        ///
        /// 
        /// 
        public static double DecodeMoneyCn(string AText)
        {
            AText = AText.Replace("亿亿", "兆");
            AText = AText.Replace("万万", "亿");
            AText = AText.Replace("点", "元");
            AText = AText.Replace("块", "元");
            AText = AText.Replace("毛", "角");
            double vResult = 0;
            double vNumber = 0; // 当前数字
            double vTemp = 0;
            int vDecimal = 0; // 是否出现小数点
            foreach (char vChar in AText)
            {
                int i = "零一二三四五六七八九".IndexOf(vChar);
                if (i < 0) i = "洞幺两三四五六拐八勾".IndexOf(vChar);
                if (i < 0) i = "零壹贰叁肆伍陆柒捌玖".IndexOf(vChar);
                if (i > 0)
                {
                    vNumber = i;
                    if (vDecimal > 0)
                    {
                        vResult += vNumber * Math.Pow(10, -vDecimal);
                        vDecimal++;
                        vNumber = 0;
                    }
                }
                else
                {
                    i = "元十百千万亿".IndexOf(vChar);
                    if (i < 0) i = "整拾佰仟万亿兆".IndexOf(vChar);
                    if (i == 5) i = 8;
                    if (i == 6) i = 12;
                    if (i > 0)
                    {
                        if (i >= 4)
                        {
                            vTemp += vNumber;
                            if (vTemp == 0) vTemp = 1;
                            vResult += vTemp * Math.Pow(10, i);
                            vTemp = 0;
                        }
                        else vTemp += vNumber * Math.Pow(10, i);
                    }
                    else
                    {
                        i = "元角分".IndexOf(vChar);
                        if (i > 0)
                        {
                            vTemp += vNumber;
                            vResult += vTemp * Math.Pow(10, -i);
                            vTemp = 0;
                        }
                        else if (i == 0)
                        {
                            vTemp += vNumber;
                            vResult += vTemp;
                            vDecimal = 1;
                            vTemp = 0;
                        }
                    }
                    vNumber = 0;
                }
            }
            return vResult + vTemp + vNumber;
        }

转载于:https://www.cnblogs.com/keewit/archive/2012/10/11/2719691.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值