<div dir="ltr">Thanks for you detailed explanation Konrad.<div><br></div><div>I'm surprised I didn't encounter this problem beforeā€“or most probably the last time was just so long ago that I don't remember it. A wakeup call for floating-point issues I suppose. Fortunately Racket offers rational numbers!</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Feb 24, 2015 at 6:13 PM, Konrad Hinsen <span dir="ltr"><<a href="mailto:konrad.hinsen@fastmail.net" target="_blank">konrad.hinsen@fastmail.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 24/02/2015 17:04, Laurent wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Btw, the reason it outputs 8 in the bad case is because on my machine:<br>
(for/sum ([i 8]) .1) ; 0.7999999999999999<br>
<br>
which is then below the .8 threshold.<br>
</blockquote>
<br></span>
It's not just your machine. 0.1 = 1/10 does not have an exact representation as a binary floating-point number. It gets rounded to the nearest binary float value, which is smaller than 0.1. This is the correct behavior according to IEEE 754.<span class="HOEnZb"><font color="#888888"><br>
<br>
Konrad.<br>
</font></span></blockquote></div><br></div>