Hi,

        *Main> 0.2 + 0.1
        0.30000000000000004

Prelude> (0.1 :: Float) + (0.2 :: Float)
0.3
Prelude> (0.1 :: Double) + (0.2 :: Double)
0.30000000000000004
Prelude> (0.1 :: Float) + 0.2 == 0.3
True

If you use Float's instead of doubles, it stores less precision, and
so gets it right.

Also, if what you really want is decimals, why not:

data Decimal = Decimal {dps :: Integer, value :: Integer}

Then define your Num instance on Decimal, and have perfect high
fidelity numbers throughout.

Thanks

Neil
_______________________________________________
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to