> I have been using some of the functions of the classes Real and > Fractional and I have observed that with the funcion > "toRational" we can > obtain the fraction that represents a given number. For instance: > *P2> toRational (5.2::Float) > 5452595 % 1048576 > Why we obtain this numbers instead of "52 % 10" or "26 % 5"?
Because you asked for the number to be converted to a Float first, and 5.2 can't be represented exactly in a single-precision float. If you don't go via Float, you get the exact result: Prelude> 5.2 :: Rational 26 % 5 > I have also obtained the following results with the functions > "fromRational" and "toRational": > *P2> (fromRational ((toRational 4) - ( toRational > (5.2::Float) )))::Double > -1.1999998092651367 > *P2> (fromRational ((toRational 4) - ( toRational > (5.2::Double) )))::Double > -1.2000000000000002 > *P2> (fromRational ((toRational 4) - ( toRational 5.2 ))) > -1.2000000000000002 > *P2> (fromRational ((toRational 4) - ( toRational > (5.2::Float) )))::Float > -1.1999998 These are all symptoms of rounding. Cheers, Simon _______________________________________________ Glasgow-haskell-users mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/glasgow-haskell-users