//分数配置 public static Fraction_Math FractionSet(double num1, double num2) { Fraction_Math Franction = new Fraction_Math(); int opnext = l.Next(4, 5); Fraction_Math result = null; Franction.Denominator = num1; Franction.Numerator = num2; switch (opnext) { case 1: result = Franction.Add(num1, num2); break; case 2: result = Franction.Sub(num1, num2); break; case 3: result = Franction.Multiple(num1, num2); break; case 4: result = Franction.Divided(num1, num2); break; } return(result); }
/// <summary> /// 计算两个分数的相除,并返回一个分数 /// </summary> /// <param name="dividend">被除数</param> /// <param name="divisor">除数</param> /// <returns></returns> public Fraction_Math Divided(Fraction_Math dividend, Fraction_Math divisor) { Fraction_Math result = new Fraction_Math(); double dencominator = dividend.Denominator * divisor.Numerator; result.Denominator = dencominator; result.Numerator = dividend.Numerator * divisor.Denominator; return(result); }
/// <summary> /// 计算两个分数的相乘,并返回一个分数 /// </summary> /// <param name="f1"></param> /// <param name="f2"></param> /// <returns></returns> public Fraction_Math Multiple(Fraction_Math f1, Fraction_Math f2) { Fraction_Math result = new Fraction_Math(); double dencominator = f1.Denominator * f2.Denominator; result.Denominator = dencominator; result.Numerator = f1.Numerator * f2.Numerator; return(result); }
/// <summary> /// 计算两个分数的相减,并返回一个分数 /// </summary> /// <param name="minuend">被减数</param> /// <param name="subtrahend">减数</param> /// <returns></returns> public Fraction_Math Sub(Fraction_Math minuend, Fraction_Math subtrahend) { Fraction_Math result = new Fraction_Math(); double dencominator = CalculateLeaseCommonMultiple(minuend.Denominator, subtrahend.Denominator); minuend.Numerator = (dencominator / minuend.Denominator) * minuend.Numerator; subtrahend.Numerator = (dencominator / subtrahend.Denominator) * subtrahend.Numerator; result.Denominator = dencominator; result.Numerator = minuend.Numerator - subtrahend.Numerator; return(result); }
/// <summary> /// 计算两个分数的相加,并返回一个分数 /// </summary> /// <param name="f1"></param> /// <param name="f2"></param> /// <returns></returns> public Fraction_Math Add(Fraction_Math f1, Fraction_Math f2) { Fraction_Math result = new Fraction_Math(); double dencominator = CalculateLeaseCommonMultiple(f1.Denominator, f2.Denominator); f1.Numerator = (dencominator / f1.Denominator) * f1.Numerator; f2.Numerator = (dencominator / f2.Denominator) * f2.Numerator; result.Denominator = dencominator; result.Numerator = f1.Numerator + f2.Numerator; return(result); }
public static Fraction_Math Score(string fraction) { Fraction_Math fraction_Math = new Fraction_Math(); if (!IsFractioon(fraction)) { fraction_Math.Numerator = Convert.ToDouble(fraction) * Convert.ToDouble(fraction); fraction_Math.Denominator = Convert.ToDouble(fraction); return(fraction_Math); } string n = null, m = null; n = fraction.Substring(0, Fraction_Math.Appoint(fraction)); m = fraction.Substring(Fraction_Math.Appoint(fraction) + 1, fraction.Length - 1 - Fraction_Math.Appoint(fraction)); fraction_Math.Numerator = Convert.ToDouble(n); fraction_Math.Denominator = Convert.ToDouble(m); return(fraction_Math); }
public static string Fraction(string d1, string d2, char c1) { Fraction_Math fraction_Math = new Fraction_Math(); DataTable dt = new DataTable(); Fraction_Math D1 = Score(d1), D2 = Score(d2); string s; switch (c1) { case '+': Fraction_Math st = fraction_Math.Add(D1, D2); s = st.Numerator + "/" + st.Denominator; break; case '-': st = fraction_Math.Sub(D1, D2); s = st.Numerator + "/" + st.Denominator; break; case '×': st = fraction_Math.Multiple(D1, D2); s = st.Numerator + "/" + st.Denominator; break; case '÷': st = fraction_Math.Divided(D1, D2); s = st.Numerator + "/" + st.Denominator; break; default: s = null; break; } if (Regex.IsMatch(dt.Compute(s, null).ToString(), @"^[+-]?\d*[.]?$")) { return(dt.Compute(s, null).ToString()); } return(s); }
private static string GetAns(string a1, string b1, char c) { double s = 0, a, b; if (IsFractioon(a1) || IsFractioon(b1)) { return(Fraction_Math.Fraction(b1, a1, c)); } a = Convert.ToDouble(a1); b = Convert.ToDouble(b1); switch (c) { case '+': s = b + a; break; case '-': s = b - a; break; case '×': s = b * a; break; case '÷': s = b / a; break; case '^': s = Math.Pow(b, a); break; } return(s.ToString()); }