Leo_wl

最近关于1.01和0.99的365次方的结果燃爆了网络,大家一致推崇为年底正能量。个人对这些文字游戏不甚感冒。不过这的确让我对其算法有了兴趣。

之前在园子里看到过大数据相乘的算法,这个应该类似吧,只是多了小数点而已。

一下是我写的代码,首次发,望轻喷。

复制代码
            //参数合法性检查略
            //去除正负号和小数点
            string first = double1.TrimStart(\'-\').Replace(".","");
            string second = double2.TrimStart(\'-\').Replace(".","");
            //计算
            int len = first.Length+second.Length;
            int[] res = new int[len];//存储结果
            int t1; int t2;int t3; int SureChar; int JinWeiChar;
            for (int i = second.Length-1; i >=0; i--)
            {
                JinWeiChar=0;
                for (int j = first.Length-1; j >=0; j--)
                {
                    t1 = Int32.Parse(second[i].ToString());
                    t2 = Int32.Parse(first[j].ToString());
                    t3=t1*t2+JinWeiChar+res[i+j+1];
                    SureChar = t3 % 10;
                    JinWeiChar = t3 /10;
                    res[j+i+1] = SureChar;
                    if(j==0)
                    {
                        res[j+i]=JinWeiChar;
                    }
                }
                
            }
            //整型数组变字符串方便后面操作
            StringBuilder sb=new StringBuilder();
            foreach (int i in res)
            {
                sb.Append(i.ToString());
            }
            //算小数点
            int dot = 0;
            if (double1.Contains(\'.\'))
                dot +=double1.Length-1- double1.IndexOf(\'.\');
            if (double2.Contains(\'.\'))
                dot += double2.Length - 1 - double2.IndexOf(\'.\');
            sb.Insert(len - dot, ".");
            //去多余的0
            string result= sb.ToString();
            string[] arr = result.Split(\'.\');
            arr[0]=arr[0].TrimStart(\'0\');
            arr[1]=arr[1].TrimEnd(\'0\');
            if (string.IsNullOrEmpty(arr[0]))
                arr[0] = "0";
            result = arr[0].ToString() + "." + arr[1].ToString();
            //加正负号
            if (double1.StartsWith("-") ^ double2.StartsWith("-"))
                result = "-" + result;
            return result.Trim(\'.\');            
复制代码

附上运行结果吧

posted on 2013-01-31 10:31  HackerVirus  阅读(1140)  评论(0编辑  收藏  举报

分类:

技术点:

相关文章:

  • 2021-08-29
  • 2022-02-18
  • 2021-12-02
  • 2021-12-03
  • 2021-06-07
  • 2022-01-08
  • 2021-10-10
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-01-13
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案