Esempio n. 1
0
 public static double ToFloat(this Fraction_class fraction)
 {
     if (fraction.numerator == 0 || fraction.denominator == 0)
         return (double)fraction.wholeNumber;
     else
     return (double)fraction.wholeNumber + (double)fraction.numerator / fraction.denominator;
 }
Esempio n. 2
0
        // Reduce fraction by GCD. Called after all math, and before display.
        public static void Reduce(this Fraction_class fraction)
        {
            if (fraction.wholeNumber==0 && (fraction.numerator == 0 ||fraction.denominator == 0)) return;

            if (fraction.denominator == 1 )
            {
                fraction.wholeNumber += fraction.numerator;
                fraction.numerator = 0;
                fraction.denominator = 0;
                return;
            }

            if (fraction.numerator < 0 || fraction.wholeNumber < 0)
            {
                fraction.fractionSign = Sign.negative;
                fraction.numerator *= -1;
            }

            if( fraction.denominator !=0 && fraction.denominator <= fraction.numerator)
            {
                fraction.wholeNumber += fraction.numerator / fraction.denominator;
                fraction.numerator %= fraction.denominator;
                if (fraction.numerator == 0) fraction.denominator = 0;
            }

            int GCD = 0;
            for (int nextN=fraction.numerator;nextN>1;--nextN)
            {
                if (fraction.numerator % nextN == 0 &&
                    fraction.denominator % nextN ==0 )
                {
                    GCD = nextN;
                    break;
                }
            }

            if (GCD !=0)
            {
                fraction.numerator /= GCD;
                fraction.denominator /= GCD;
            }

            if (fraction.denominator == 1)
            {
                fraction.wholeNumber += fraction.numerator;
                fraction.numerator = 0;
                fraction.denominator = 0;
                return;
            }

            if (fraction.fractionSign == Sign.negative)
            {
                fraction.numerator *= -1;
                fraction.denominator *= -1;
                fraction.wholeNumber *= -1;
            }

        }
Esempio n. 3
0
        public static string ToDisplayFloat(this Fraction_class fract, string zeroOpt="0")
        {
            string s = fract.ToFloat().ToString();

            if (s == "0")
                return zeroOpt;

            return fract.ToFloat().ToString();

        }
Esempio n. 4
0
 // ToSimpleFraction adds the whole number to the fraction numerator for additive use.
 public static void ToSimpleFraction(this Fraction_class fraction)
 {
     if (fraction.numerator == 0)
     {
         fraction.numerator = fraction.wholeNumber;
         fraction.denominator = 1;
         fraction.wholeNumber = 0;
     }
     else
     {
         fraction.numerator += fraction.wholeNumber * fraction.denominator;
         fraction.wholeNumber = 0;
     }
 }
Esempio n. 5
0
        public void testableSubTest()
        {
            Fraction_class Accumulator = new Fraction_class();
            Fraction_class InBound     = new Fraction_class();

            Accumulator.Parse("100 1/2");

            InBound.Parse("50 1/4");

            Accumulator.Subtract(InBound);

            Assert.IsTrue(Accumulator.ToDisplayFraction() == "50 1/4");

            Accumulator.Subtract(InBound);

            Assert.IsTrue(Accumulator.ToDisplayFraction() == "0");
        }
Esempio n. 6
0
        public static string ToDisplayFraction(this Fraction_class fraction, string zeroOpt = "0")
        {
            fraction.Reduce();

            if (fraction.denominator==0 || fraction.numerator == 0)
            {
                if (fraction.wholeNumber == 0)
                    return zeroOpt;
                else
                    return $"{fraction.wholeNumber}";
            }
            else  
            {
                if (fraction.wholeNumber == 0)
                    return $"{fraction.numerator}/{fraction.denominator}";
                else
                return $"{fraction.wholeNumber} { fraction.numerator}/{ fraction.denominator}";
            }        

        }