Example #1
0
        //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);
        }
Example #2
0
        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));
        }
Example #3
0
        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));
        }
Example #4
0
        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));
        }
Example #5
0
        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)
        }