zoukankan      html  css  js  c++  java
  • 中文转换成数字金额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;
            }

  • 相关阅读:
    STL源码剖析之_allocate函数
    PAT 1018. Public Bike Management
    PAT 1016. Phone Bills
    PAT 1012. The Best Rank
    PAT 1014. Waiting in Line
    PAT 1026. Table Tennis
    PAT 1017. Queueing at Bank
    STL源码剖析之list的sort函数实现
    吃到鸡蛋好吃,看看是哪只母鸡下的蛋:好用的Sqlite3
    cJSON
  • 原文地址:https://www.cnblogs.com/keewit/p/2719691.html
Copyright © 2011-2022 走看看