//Denomiator是分母 public Fraction(long molecular, long denomiator) { //Note:Molecular 是分子,Denomiator是分母,这里可以是一个假分数传入 //计算时都使用假分数计算,但是在显示时使用真分数 this.Molecular = molecular; if (denomiator == 0) { throw new MyException.OwnException("有表达式中出现了分母为0!"); } this.Denomiator = denomiator; Fraction.Reduce(ref this.Molecular, ref this.Denomiator); }
public static Fraction operator *(Fraction lhs, Fraction rhs) { long Mo1, Mo2; long De1, De2; long MoMult, DeMult; Mo1 = lhs.GetMo(); Mo2 = rhs.GetMo(); De1 = lhs.GetDe(); De2 = rhs.GetDe(); checked { MoMult = Mo1 * Mo2; DeMult = De1 * De2; } Fraction.Reduce(ref MoMult, ref DeMult); return(new Fraction(MoMult, DeMult)); }
public static Fraction operator -(Fraction lhs, Fraction rhs) { long Mo1, Mo2; long De1, De2; long MoSub, DeSub; Mo1 = lhs.GetMo(); Mo2 = rhs.GetMo(); De1 = lhs.GetDe(); De2 = rhs.GetDe(); //lhs = Mo1/De1 , rhs = Mo2/De2 checked { MoSub = Mo1 * De2 - Mo2 * De1; DeSub = De1 * De2; } Fraction.Reduce(ref MoSub, ref DeSub); return(new Fraction(MoSub, DeSub)); }
public static Fraction operator +(Fraction lhs, Fraction rhs) { long Mo1, Mo2; long De1, De2; long MoSum, DeSum; Mo1 = lhs.GetMo(); Mo2 = rhs.GetMo(); De1 = lhs.GetDe(); De2 = rhs.GetDe(); //rhs = Mo1/De1 lhs = Mo2/De2 checked { MoSum = Mo1 * De2 + Mo2 * De1; DeSum = De1 * De2; } Fraction.Reduce(ref MoSum, ref DeSum); return(new Fraction(MoSum, DeSum)); }
public static Fraction operator /(Fraction lhs, Fraction rhs) { long Mo1, Mo2; long De1, De2; long MoDiv, DeDiv; Mo1 = lhs.GetMo(); Mo2 = rhs.GetMo(); De1 = lhs.GetDe(); De2 = rhs.GetDe(); checked { MoDiv = Mo1 * De2; DeDiv = Mo2 * De1; } if (DeDiv == 0) { throw new MyException.OwnException("除数不能为0!"); } Fraction.Reduce(ref MoDiv, ref DeDiv); return(new Fraction(MoDiv, DeDiv)); //lhs = Mo1/De1 rhs = Mo2/De2 , lhs / rhs = (Mo1 *De2)/(Mo2 *De1) }