[racket] Inconsistency of `in-range` and numerical issues

From: Laurent (laurent.orseau at gmail.com)
Date: Tue Feb 24 10:41:45 EST 2015

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`?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20150224/7b00e24f/attachment.html>

Posted on the users mailing list.