
Prelude> toRational 697.04157958259998
3065621287177675 % 4398046511104
Prelude> toRational 697.0415795826
3065621287177675 % 4398046511104
As you can see, both numbers are represented by the same Double.
Haskell prints a Double with the simplest number that converts back to
the same bit pattern.
So there's no "keep more decimals", just a matter of string conversion.
-- Lennart
On Tue, Aug 25, 2009 at 7:11 PM, Ketil Malde
Steve
writes: Also, I had a problem using floating point in Python where
round(697.04157958254996, 10) gave 697.04157958259998
Its been fixed in the latest versions of Python:
round(697.04157958254996, 10) 697.0415795825
ghci> roundN 697.04157958254996 10 697.0415795826
Is there something special with this number?
Python 2.6.2 (release26-maint, Apr 19 2009, 01:56:41) [GCC 4.3.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> 697.04157958259998 697.04157958259998 >>> 12345.678901234567890 12345.678901234567
GHCi, version 6.8.2: http://www.haskell.org/ghc/ :? for help Loading package base ... linking ... done. Prelude> 697.04157958259998 697.0415795826 Prelude> 12345.678901234567890 12345.678901234567
So, Python manages to keep more decimals than GHC for your number, but for other numbers, the precision appears to be the same.
-k -- If I haven't seen further, it is by standing in the footprints of giants _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe