
Yes, they all seem to be right. You get these funny effects because numbers like 5.2 do not have an exact representation with floating point numbers in base to (like Float and Double most likely have on your machine). The number 5.2 is stored as a slightly different number as a Float, but the toRational function is exact so it gives you the number corresponding to the internal representation. Take a course on numerical analysis. :) -- Lennart Juan Ignacio Garcia Garcia wrote:
hello, 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"? 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 Are all these results ok? If this is the case, why?
Thanks,
Ignacio
_______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users