[racket] Inconsistency of `in-range` and numerical issues
That's the saddest argument in support of anything Racket I have ever seen (even with the smiley).
On Feb 24, 2015, at 1:05 PM, Andrew Kent <andmkent at indiana.edu> wrote:
> 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
> ____________________
> Racket Users list:
> http://lists.racket-lang.org/users