[Haskell-beginners] How to improve the accuracy of floating point calculation?

Brandon Allbery allbery.b at gmail.com
Tue Feb 5 23:50:59 CET 2013


On Tue, Feb 5, 2013 at 5:41 PM, yi lu <zhiwudazhanjiangshi at gmail.com> wrote:

> I found that in ghci, I input
> [0.1,0.2..2]
> and run, I get a result of
>
>
> [0.1,0.2,0.30000000000000004,0.4000000000000001,0.5000000000000001,0.6000000000000001,0.7000000000000001,0.8,0.9,1.0,1.1,1.2000000000000002,1.3000000000000003,1.4000000000000004,1.5000000000000004,1.6000000000000005,1.7000000000000006,1.8000000000000007,1.9000000000000008,2.000000000000001]
>
> But, as you know, it is not the exact answer.
>
> So, I wonder if there is something I can do to achieve a better
> performance and get [0.1,0.2,0.3,0.4..] as the result.
>

Welcome to the world of floating point numbers.  Perfect accuracy is not
possible; the CReal type from the "numbers" package may handle cases you
care about, or may not.  (Other languages often use output formats that can
largely hide the errors, but they're still there and will eventually
accumulate into visibility.)

-- 
brandon s allbery kf8nh                               sine nomine associates
allbery.b at gmail.com                                  ballbery at sinenomine.net
unix, openafs, kerberos, infrastructure, xmonad        http://sinenomine.net
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/beginners/attachments/20130205/2357eb94/attachment.htm>


More information about the Beginners mailing list