<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Warum endet Schleife mit 10.0?]]></title><description><![CDATA[<p>Warum endet folgende Schleife mit 10?<br />
Bei x+=0.5 klappt das, da endet sie bei 9.5 aber bei 0.1 nicht.<br />
Kann es mit Rundung zu tun haben dass bei 100ter iteration x = 9.999999999<br />
ist und deswegen reingeht aber in der ausgabe dann gerundet wird?</p>
<pre><code>#include &lt;iostream&gt;
int main()
{
    for ( double x = 0.0; x &lt; 10.0; x += 0.1)
      std::cout &lt;&lt; x &lt;&lt; std::endl;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/301283/warum-endet-schleife-mit-10-0</link><generator>RSS for Node</generator><lastBuildDate>Sun, 05 Apr 2026 05:33:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/301283.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 23 Mar 2012 10:05:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Warum endet Schleife mit 10.0? on Fri, 23 Mar 2012 10:05:24 GMT]]></title><description><![CDATA[<p>Warum endet folgende Schleife mit 10?<br />
Bei x+=0.5 klappt das, da endet sie bei 9.5 aber bei 0.1 nicht.<br />
Kann es mit Rundung zu tun haben dass bei 100ter iteration x = 9.999999999<br />
ist und deswegen reingeht aber in der ausgabe dann gerundet wird?</p>
<pre><code>#include &lt;iostream&gt;
int main()
{
    for ( double x = 0.0; x &lt; 10.0; x += 0.1)
      std::cout &lt;&lt; x &lt;&lt; std::endl;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2194520</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2194520</guid><dc:creator><![CDATA[GastXXD]]></dc:creator><pubDate>Fri, 23 Mar 2012 10:05:24 GMT</pubDate></item><item><title><![CDATA[Reply to Warum endet Schleife mit 10.0? on Fri, 23 Mar 2012 10:09:34 GMT]]></title><description><![CDATA[<p>GastXXD schrieb:</p>
<blockquote>
<p>Kann es mit Rundung zu tun haben dass bei 100ter iteration x = 9.999999999<br />
ist und deswegen reingeht aber in der ausgabe dann gerundet wird?</p>
</blockquote>
<p>Genau. 0.1 lässt sich als float nicht exakt darstellen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2194525</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2194525</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Fri, 23 Mar 2012 10:09:34 GMT</pubDate></item><item><title><![CDATA[Reply to Warum endet Schleife mit 10.0? on Fri, 23 Mar 2012 10:24:39 GMT]]></title><description><![CDATA[<p>Solche Algorithmen werden numerisch stabiler, wenn man sie etwas umschreibst:</p>
<pre><code class="language-cpp">int main()
{
    double inc = 0.1;
    double max = 10.;
    std::size_t steps = max / inc - inc;

    for(std::size_t n = 0; n &lt;= steps; ++n)
    {
        std::cout &lt;&lt; inc * n &lt;&lt; std::endl;
    }
}
</code></pre>
<p>so akkumulieren sich die Rundungsfehler nicht auf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2194532</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2194532</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Fri, 23 Mar 2012 10:24:39 GMT</pubDate></item><item><title><![CDATA[Reply to Warum endet Schleife mit 10.0? on Fri, 23 Mar 2012 10:23:55 GMT]]></title><description><![CDATA[<p>Daraus lernt man typischerweise zwei Dinge:</p>
<ol>
<li>Fließkommazahlen eignen sich nicht für Schleifenbedingungen (wegen der Rundungsfehler)</li>
<li>a&lt;b und a==b ist für Fließkommazahlen oft ne wacklige Angelegenheit. (gleicher Grund)</li>
</ol>
]]></description><link>https://www.c-plusplus.net/forum/post/2194533</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2194533</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 23 Mar 2012 10:23:55 GMT</pubDate></item><item><title><![CDATA[Reply to Warum endet Schleife mit 10.0? on Fri, 23 Mar 2012 11:07:04 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>Daraus lernt man typischerweise zwei Dinge:</p>
<ol>
<li>Fließkommazahlen eignen sich nicht für Schleifenbedingungen (wegen der Rundungsfehler)</li>
<li>a&lt;b und a==b ist für Fließkommazahlen oft ne wacklige Angelegenheit. (gleicher Grund)</li>
</ol>
</blockquote>
<p>Und wenn man noch ein wenig mehr Informationen möchte:<br />
<a href="http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html" rel="nofollow">http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html</a><br />
oder als PDF:<br />
<a href="http://web.cse.msu.edu/~cse320/Documents/FloatingPoint.pdf" rel="nofollow">http://web.cse.msu.edu/~cse320/Documents/FloatingPoint.pdf</a></p>
<p>Oder noch etwas kürzer erklärt und einfach auf Vergleiche ausgerichtet:<br />
<a href="http://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/" rel="nofollow">http://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/</a></p>
<p>Oder als Witz:<br />
<a href="http://xkcd.com/217/" rel="nofollow">http://xkcd.com/217/</a></p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2194546</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2194546</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Fri, 23 Mar 2012 11:07:04 GMT</pubDate></item></channel></rss>