<?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[Vergleich von double]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ein (wahrscheinlich) ganz einfache Frage:<br />
Liefert der Code immer yes oder können nach der<br />
Zuweisung eines Wertes auch Differenzen vorhanden sein?</p>
<pre><code class="language-cpp">double d = 0.0;
        if(d == 0.0)
                std::cout &lt;&lt; &quot;yes&quot; &lt;&lt; std::endl;
        else
                std::cout &lt;&lt; &quot;no&quot; &lt;&lt; std::endl;
</code></pre>
<p>Gruß,<br />
Frank</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/214511/vergleich-von-double</link><generator>RSS for Node</generator><lastBuildDate>Tue, 13 Oct 2026 11:38:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/214511.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 30 May 2008 09:03:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Vergleich von double on Fri, 30 May 2008 09:03:20 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ein (wahrscheinlich) ganz einfache Frage:<br />
Liefert der Code immer yes oder können nach der<br />
Zuweisung eines Wertes auch Differenzen vorhanden sein?</p>
<pre><code class="language-cpp">double d = 0.0;
        if(d == 0.0)
                std::cout &lt;&lt; &quot;yes&quot; &lt;&lt; std::endl;
        else
                std::cout &lt;&lt; &quot;no&quot; &lt;&lt; std::endl;
</code></pre>
<p>Gruß,<br />
Frank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1519533</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1519533</guid><dc:creator><![CDATA[Frank31]]></dc:creator><pubDate>Fri, 30 May 2008 09:03:20 GMT</pubDate></item><item><title><![CDATA[Reply to Vergleich von double on Fri, 30 May 2008 09:08:39 GMT]]></title><description><![CDATA[<p>ich weiss nicht ob genau dieser code immer true liefern wird aber generell kannst du von ner kleinen ungenauigkeit ausgehen, zb wenn du sowas machst</p>
<pre><code class="language-cpp">for(double i = 0.0; i != 10.0; i += 0.1);
</code></pre>
<p>ist es vermutlich eine endlosschleife weil nach 10 iterationen i 9.99999 oder 10.000001 oder so sein wird</p>
<p>deswegen wenn du double werte vergleichst solltest du dir nen sehr kleinen bereich um das double herum waehlen der eine toleranz darstellt, auf die art</p>
<pre><code class="language-cpp">for(double i = 0.0; !floatingPointEquals(i, 10.0); i += 0.1);
</code></pre>
<p>und floatingPointEquals schaut ist etwas wie</p>
<pre><code class="language-cpp">bool floatingPointEquals(double source, double desired)
{
   return abs( source - desired ) &lt; FLOATING_POINT_TOLERANCE;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1519539</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1519539</guid><dc:creator><![CDATA[Vevusio]]></dc:creator><pubDate>Fri, 30 May 2008 09:08:39 GMT</pubDate></item><item><title><![CDATA[Reply to Vergleich von double on Fri, 30 May 2008 09:09:10 GMT]]></title><description><![CDATA[<p>Was du da machst sollte man generell nie machen. Man vergleicht nicht Fließkommazahlen auf Gleichheit. Du solltest immer den Wert vom Erwartungswert abziehen und den Betrag des Ergebnisses auf Unterschreitung einer Schranke prüfen.<br />
Für den speziellen Fall 0.0 kann ich dir das jetzt nicht sagen. Möglicherweise ist 0.0 wirklich glatt Null und das würde gehen. Ich würde das da nicht machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1519540</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1519540</guid><dc:creator><![CDATA[AndyDD]]></dc:creator><pubDate>Fri, 30 May 2008 09:09:10 GMT</pubDate></item><item><title><![CDATA[Reply to Vergleich von double on Fri, 30 May 2008 12:22:29 GMT]]></title><description><![CDATA[<p>Ich denke dass das Ganze auch von dem Compiler anhängt, welcher man benutzt. Denn meine Erfahrungen zeigten, dass je nachdem welche Gleitkommakonsistenz bzw. -optimierungen ich einstellte, unterschiedliche Ergebnisse herauskamen. (Das war übrigens eine meiner ersten Fragen im Forum warum sich Debug und Release Version unterscheiden)</p>
<p>Generell empfehle auch ich den Einsatz von Epsilon Regionen. Diese sollte aber möglichst klein gehalten werden, da diese auch durchaus Fehler verursachen können.</p>
<p>Alternativ kann man auch versuchen andere Algorithmen zu verwenden, welche weniger Rundungsfehler verursachen. Dies ist und bleibt aber ein meines Erachtens Recht schwieriges Thema (Bsp: Summation von N Zahlen &lt;-&gt; Kahan Summe)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1519694</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1519694</guid><dc:creator><![CDATA[Bitte ein Bit]]></dc:creator><pubDate>Fri, 30 May 2008 12:22:29 GMT</pubDate></item><item><title><![CDATA[Reply to Vergleich von double on Fri, 30 May 2008 16:51:29 GMT]]></title><description><![CDATA[<p>Wenn der Variablen d exakt der Wert 0.0 zugewiesen wird und danach (ohne weitere Veränderung der Variablen d) auf diesen Wert geprüft wird, dann kann man davon ausgeehen, dass der Vergleich wahr ist. Wird der Wert 0.0 aber irgendwie errechnet, kann man diese Annahme nicht mehr treffen.</p>
<p>Auch wenn 0.0 vielleicht nicht exakt als double dargestellt werden kann, wei Double-Literale 0.0 werden auf das gleiche Bitmuster abgebildet und sind somit gleich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1519869</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1519869</guid><dc:creator><![CDATA[Chewie83]]></dc:creator><pubDate>Fri, 30 May 2008 16:51:29 GMT</pubDate></item><item><title><![CDATA[Reply to Vergleich von double on Fri, 30 May 2008 19:49:07 GMT]]></title><description><![CDATA[<p>Nur der Vollständigkeit halber: Dem IEEE 754 nach ist 0.0 immer exakt darstellbar. Bei Berechnungen gilt natürlich das vorher gesagte, da werden Rundungsfehler wahrscheinlich dafür sorgen, dass nicht mehr 0.0 herauskommt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1519931</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1519931</guid><dc:creator><![CDATA[Christoph]]></dc:creator><pubDate>Fri, 30 May 2008 19:49:07 GMT</pubDate></item><item><title><![CDATA[Reply to Vergleich von double on Fri, 30 May 2008 20:14:21 GMT]]></title><description><![CDATA[<p><a href="http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm" rel="nofollow">http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1519945</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1519945</guid><dc:creator><![CDATA[rüdiger]]></dc:creator><pubDate>Fri, 30 May 2008 20:14:21 GMT</pubDate></item></channel></rss>