ToString() public méthode

Get the value of the Fraction as a string, with proper representation for NaNs and infinites
The current culture determines the textual representation the Indeterminates
public ToString ( ) : string
Résultat string
Exemple #1
0
        public void Main()
        {
            Fraction frac = new Fraction(); // we'll get NaN
            Assert.AreEqual(frac, Fraction.NaN);
            Assert.AreEqual(frac.ToString(), NumberFormatInfo.CurrentInfo.NaNSymbol);

            frac = new Fraction(1, 5);       // we'll get 1/5
            Assert.AreEqual(frac.ToString(), "1/5");

            frac = new Fraction(25);        // we'll get 25
            Assert.AreEqual(frac.ToString(), "25");

            frac = new Fraction(0.0);		// we'll get 0
            Assert.AreEqual(frac.ToString(), "0");

            frac = new Fraction(0.25);      // we'll get 1/4
            Assert.AreEqual(frac.ToString(), "1/4");

            frac = new Fraction(9.25);      // we'll get 37/4
            Assert.AreEqual(frac.ToString(), "37/4");

            frac = new Fraction(long.MaxValue, 1);
            string compareTo = string.Format("{0}", long.MaxValue);
            Assert.AreEqual(frac.ToString(), compareTo);

            frac = new Fraction(1, long.MaxValue);
            compareTo = string.Format("1/{0}", long.MaxValue);
            Assert.AreEqual(frac.ToString(), compareTo);

            frac = new Fraction(long.MaxValue, long.MaxValue);
            Assert.AreEqual(frac.ToString(), "1");

            // the plus-one issue is because of twos-complement representing one more negtive value than
            // positive
            frac = new Fraction(long.MinValue + 1, 1);
            compareTo = string.Format("{0}", long.MinValue + 1);
            Assert.AreEqual(frac.ToString(), compareTo);

            frac = new Fraction(1, long.MinValue + 1);
            compareTo = string.Format("-1/{0}", Math.Abs(long.MinValue + 1));
            Assert.AreEqual(frac.ToString(), compareTo);

            frac = new Fraction(long.MinValue + 1, long.MinValue + 1);
            Assert.AreEqual(frac.ToString(), "1");

            frac = new Fraction(long.MaxValue, long.MinValue + 1);
            Assert.AreEqual(frac.ToString(), "-1");

            frac = new Fraction(long.MinValue + 1, long.MaxValue);
            Assert.AreEqual(frac.ToString(), "-1");

            frac = new Fraction(0.025);     // we'll get 1/40
            Assert.AreEqual(frac.ToString(), "1/40");

            frac = new Fraction(1 / 2.0);   // we'll get 1/2
            Assert.AreEqual(frac.ToString(), "1/2");
            frac = new Fraction(1 / 3.0);   // we'll get 1/3
            Assert.AreEqual(frac.ToString(), "1/3");
            frac = new Fraction(1 / 4.0);   // we'll get 1/4
            Assert.AreEqual(frac.ToString(), "1/4");
            frac = new Fraction(1 / 5.0);   // we'll get 1/5
            Assert.AreEqual(frac.ToString(), "1/5");
            frac = new Fraction(1 / 6.0);   // we'll get 1/6
            Assert.AreEqual(frac.ToString(), "1/6");
            frac = new Fraction(1 / 7.0);   // we'll get 1/7
            Assert.AreEqual(frac.ToString(), "1/7");
            frac = new Fraction(1 / 8.0);   // we'll get 1/8
            Assert.AreEqual(frac.ToString(), "1/8");
            frac = new Fraction(1 / 9.0);   // we'll get 1/9
            Assert.AreEqual(frac.ToString(), "1/9");
            frac = new Fraction(1 / 10.0);   // we'll get 1/10
            Assert.AreEqual(frac.ToString(), "1/10");
            frac = new Fraction(1 / 49.0);   // we'll get 1/49
            Assert.AreEqual(frac.ToString(), "1/49");

            frac = new Fraction(6);
            Assert.AreEqual(frac.ToString(), "6");

            Fraction divisor = new Fraction(4);
            Assert.AreEqual(divisor.ToString(), "4");

            frac %= divisor;
            Assert.AreEqual(frac.ToString(), "2");

            frac = new Fraction(9, 4);
            Assert.AreEqual(frac.ToString(), "9/4");

            divisor = new Fraction(2);
            Assert.AreEqual(divisor.ToString(), "2");

            frac %= divisor;
            Assert.AreEqual(frac.ToString(), "1/4");

            frac = new Fraction(5, 12);
            Assert.AreEqual(frac.ToString(), "5/12");

            divisor = new Fraction(1, 4);
            Assert.AreEqual(divisor.ToString(), "1/4");

            frac %= divisor;
            Assert.AreEqual(frac.ToString(), "1/6");

            frac = new Fraction(1.0);     // we'll get 1
            Assert.AreEqual(frac.ToString(), "1");

            frac = new Fraction(2.0);     // we'll get 2
            Assert.AreEqual(frac.ToString(), "2");

            frac = new Fraction(-2.0);    // we'll get -2
            Assert.AreEqual(frac.ToString(), "-2");

            frac = new Fraction(-1.0);    // we'll get -1
            Assert.AreEqual(frac.ToString(), "-1");

            frac = new Fraction(0.5);		// we'll get 1/2
            Assert.AreEqual(frac.ToString(), "1/2");

            frac = new Fraction(1.5);     // we'll get 3/2
            Assert.AreEqual(frac.ToString(), "3/2");

            Console.WriteLine("Doing the loop check");
            for (int numerator = -100; numerator < 100; numerator++)
            {
                Console.Write("{0} ", numerator);

                for (int denominator = -100; denominator < 100; denominator++)
                {
                    Fraction frac1 = new Fraction(numerator, denominator);

                    double dbl = (double)numerator / (double)denominator;
                    Fraction frac2 = new Fraction(dbl);

                    Assert.AreEqual(frac1, frac2);
                }
            }
            Console.WriteLine();

            frac = new Fraction("6.25");    // we'll get 25/4
            Assert.AreEqual(frac.ToString(), "25/4");

            frac = 0;
            Assert.AreEqual(frac.ToString(), "0");

            frac = 1;
            Assert.AreEqual(frac.ToString(), "1");

            frac /= new Fraction(0);
            Assert.AreEqual(frac, Fraction.PositiveInfinity);
            Assert.AreEqual(frac.ToString(), NumberFormatInfo.CurrentInfo.PositiveInfinitySymbol);

            frac = -1;
            Assert.AreEqual(frac.ToString(), "-1");

            frac /= new Fraction(0);
            Assert.AreEqual(frac, Fraction.NegativeInfinity);
            Assert.AreEqual(frac.ToString(), NumberFormatInfo.CurrentInfo.NegativeInfinitySymbol);

            // we can enter anything like "213" or
            // "23/3" or "4.27"
            Console.Write("Enter a Fraction: ");
            frac = new Fraction(System.Console.ReadLine());

            Console.WriteLine(frac);     // displays the current value of frac object;

            frac = new Fraction("1/2"); // initialize a fraction with 1/2
            Assert.AreEqual(frac.ToString(), "1/2");

            Console.WriteLine(frac + 2.5);     // will display 3
            Assert.AreEqual((frac + 2.5).ToString(), "3");

            frac = "1/2";			// implicit cast from string to
            Assert.AreEqual(frac.ToString(), "1/2");

            frac = "22.5";         // implicit cast from string to fraction
            Assert.AreEqual(frac.ToString(), "45/2");

            frac = 10.25;         // implicit cast from double to fraction
            Assert.AreEqual(frac.ToString(), "41/4");

            frac = 15;             // implicit cast from integer/long to fraction
            Assert.AreEqual(frac.ToString(), "15");

            frac = 0.5;                 // initialize frac=1/2
            Assert.AreEqual(frac.ToString(), "1/2");

            Console.WriteLine(frac - 0.25);    // Yes, you are right. "1/4" is displayed
            Assert.AreEqual((frac - 0.25).ToString(), "1/4");

            Console.WriteLine(frac + "1/4");
            Assert.AreEqual((frac + "1/4").ToString(), "3/4");

            if (frac.Equals(0.5))
                Console.WriteLine("seems that frac == 0.5");

            frac += 0.5;
            Assert.AreEqual(frac.ToString(), "1");

            if (frac.Equals(1))
                Console.WriteLine("seems that now frac == 1");

            frac = double.NaN;
            Console.WriteLine(frac.ToString());
            Assert.AreEqual(frac.ToString(), NumberFormatInfo.CurrentInfo.NaNSymbol);

            frac = double.PositiveInfinity;
            Console.WriteLine(frac.ToString());
            Assert.AreEqual(frac.ToString(), NumberFormatInfo.CurrentInfo.PositiveInfinitySymbol);

            frac = double.NegativeInfinity;
            Console.WriteLine(frac.ToString());
            Assert.AreEqual(frac.ToString(), NumberFormatInfo.CurrentInfo.NegativeInfinitySymbol);

            frac = "33";
            frac += "1/3";
            Console.WriteLine(frac.ToString());

            frac *= 3;
            Console.WriteLine(frac.ToString());

            Console.Write("Any key to quit");
            Console.ReadLine();
        }