[racket] Inconsistency of `in-range` and numerical issues
Racket:
(+ .1 .1 .1 .1 .1 .1 .1 .1)
0.7999999999999999
Python:
>>> .1 + .1 + .1 + .1 + .1 + .1 + .1 + .1
0.7999999999999999
Looks consistent to me =)
On Tue Feb 24 2015 at 10:43:19 AM Laurent <laurent.orseau at gmail.com> wrote:
> I've discovered a rather troubling behaviour when using `in-range` with
> floating point numbers, which I think is worth knowing in case you hadn't
> consider the issue before:
>
> On my machine, I get the following:
>
> (length (for/list ([i (in-range .1 .7 .1)]) i)) ; 6
> (length (for/list ([i (in-range .1 .8 .1)]) i)) ; 8 (!)
>
> But:
> (length (for/list ([i (in-range 1/10 7/10 1/10)]) i)) ; 6
> (length (for/list ([i (in-range 1/10 8/10 1/10)]) i)) ; 7
>
>
> Would it be a good idea to safe-guard these kinds of cases directly in
> `in-range`?
>
>
>
>
>
>
>
> ____________________
> Racket Users list:
> http://lists.racket-lang.org/users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20150224/c9c75dd8/attachment.html>