Floating point problems

Jamie Brandon jcb73 at cam.ac.uk
Wed Aug 30 14:38:35 EDT 2006


I recently defied my supervisor and used Haskell to write my coursework
instead of C. All went well until I needed floating point and
started having odd results. As far as I can tell it isn't
substantially affecting my results but it is rather embarrassing after
slagging off C so much. Here are some examples:
        
        *Main> 0.2 + 0.1
        0.30000000000000004
        *Main> 0.200000000000000 + 0.100000000000000000
        0.30000000000000004
        *Main> 0.3 + 0.1
        0.4
        *Main> 0.2 + 0.1
        0.30000000000000004
        *Main> it + 0.1
        0.4
        
I assume this is a result of the discrepancy between binary and decimal
representations of the numbers. Is there any way around? For a start, it
would be nice to have a simple way to get 0.1 + 0.2 == 0.3  =  True
        
This is with GHC 6.4.1 and GCC 4.0.3
        
Thanks, Jamie



More information about the Glasgow-haskell-users mailing list