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); }
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; } }
public bool IsEqual(FenShu f) { return(_fenMu == f._fenMu && _fenZi == f._fenZi); }