Exemple #1
0
            private FenShu Analyze(string s)
            {
                FenShu f    = new FenShu(1, 0);
                var    temp = s.Split('.', '(', ')');

                for (int i = 0; i < temp.Length; i++)
                {
                    if (temp[i].Length == 0)
                    {
                        continue;
                    }
                    if (i == 0)
                    {
                        f.Add(new FenShu(1, long.Parse(temp[i])));
                    }
                    else if (i == 1)
                    {
                        f.Add(new FenShu((long)Math.Pow(10, temp[i].Length), long.Parse(temp[i])));
                    }
                    else if (i == 2)
                    {
                        f.Add(new FenShu((long)Math.Pow(10, temp[i - 1].Length) * ((long)Math.Pow(10, temp[i].Length) - 1), long.Parse(temp[i])));
                    }
                }
                return(f);
            }
Exemple #2
0
 public void Add(FenShu f)
 {
     if (_fenZi == 0)
     {
         _fenZi = f._fenZi;
         _fenMu = f._fenMu;
     }
     else
     {
         var fenMu = _fenMu * f._fenMu;
         var fenZi = _fenZi * f._fenMu + _fenMu * f._fenZi;
         var g     = Gcd(fenZi, fenMu);
         _fenZi = fenZi / g;
         _fenMu = fenMu / g;
     }
 }
Exemple #3
0
 public bool IsEqual(FenShu f)
 {
     return(_fenMu == f._fenMu && _fenZi == f._fenZi);
 }