<?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[float Vergleich]]></title><description><![CDATA[<p>Ich habe folgenden Float Vergleich:</p>
<pre><code>int desktopWidth  = GetSystemMetrics(SM_CXSCREEN); 
int desktopHeight = GetSystemMetrics(SM_CYSCREEN); 
float ratio1 = static_cast&lt;float&gt;(desktopWidth) / static_cast&lt;float&gt;(desktopHeight);
float ratio2 = 4.0f / 3.0f;
if(ratio1 == ratio2) {
   // Das hier ist true
}

if( static_cast&lt;float&gt;(desktopWidth) / static_cast&lt;float&gt;(desktopHeight) == 4.0f / 3.0f) { 
    // Das hier ist falsche
}
</code></pre>
<p>Das 1. if ist wahr, das 2. if hingegen false. Wie kann das sein? Das ist doch 2 Mal exakt der selbe Vergleich? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/312205/float-vergleich</link><generator>RSS for Node</generator><lastBuildDate>Mon, 03 Aug 2026 02:04:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/312205.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 28 Dec 2012 14:29:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to float Vergleich on Fri, 28 Dec 2012 14:29:06 GMT]]></title><description><![CDATA[<p>Ich habe folgenden Float Vergleich:</p>
<pre><code>int desktopWidth  = GetSystemMetrics(SM_CXSCREEN); 
int desktopHeight = GetSystemMetrics(SM_CYSCREEN); 
float ratio1 = static_cast&lt;float&gt;(desktopWidth) / static_cast&lt;float&gt;(desktopHeight);
float ratio2 = 4.0f / 3.0f;
if(ratio1 == ratio2) {
   // Das hier ist true
}

if( static_cast&lt;float&gt;(desktopWidth) / static_cast&lt;float&gt;(desktopHeight) == 4.0f / 3.0f) { 
    // Das hier ist falsche
}
</code></pre>
<p>Das 1. if ist wahr, das 2. if hingegen false. Wie kann das sein? Das ist doch 2 Mal exakt der selbe Vergleich? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2283966</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283966</guid><dc:creator><![CDATA[Innterr]]></dc:creator><pubDate>Fri, 28 Dec 2012 14:29:06 GMT</pubDate></item><item><title><![CDATA[Reply to float Vergleich on Fri, 28 Dec 2012 14:39:30 GMT]]></title><description><![CDATA[<p>Du solltest dich über fließkommazahlen einlesen.</p>
<p>Die Genauigkeit zwischen Registervariablen und Stackvariablen kann unterschiedlich sein. Ausserdem hast du immer Rundungsfehler, sodass 800/600 nicht 4/3 sein muss.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2283971</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283971</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Fri, 28 Dec 2012 14:39:30 GMT</pubDate></item><item><title><![CDATA[Reply to float Vergleich on Fri, 28 Dec 2012 14:45:35 GMT]]></title><description><![CDATA[<p>Ich weiß wie Floats arbeiten und ich kenne die Rundungsproblematik. Mir geht es hier nur darum, wieso es einen Unterschied macht ob ich den Ausdruck VOR dem if erzeuge oder direkt im if.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2283972</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283972</guid><dc:creator><![CDATA[Innterr]]></dc:creator><pubDate>Fri, 28 Dec 2012 14:45:35 GMT</pubDate></item><item><title><![CDATA[Reply to float Vergleich on Fri, 28 Dec 2012 14:48:35 GMT]]></title><description><![CDATA[<p>Innterr schrieb:</p>
<blockquote>
<p>Ich weiß wie Floats arbeiten und ich kenne die Rundungsproblematik. Mir geht es hier nur darum, wieso es einen Unterschied macht ob ich den Ausdruck VOR dem if erzeuge oder direkt im if.</p>
</blockquote>
<p>otze schrieb:</p>
<blockquote>
<p>Die Genauigkeit zwischen Registervariablen und Stackvariablen kann unterschiedlich sein.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2283973</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283973</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 28 Dec 2012 14:48:35 GMT</pubDate></item><item><title><![CDATA[Reply to float Vergleich on Fri, 28 Dec 2012 15:13:39 GMT]]></title><description><![CDATA[<p>Innterr schrieb:</p>
<blockquote>
<p>Ich weiß wie Floats arbeiten und ich kenne die Rundungsproblematik. Mir geht es hier nur darum, wieso es einen Unterschied macht ob ich den Ausdruck VOR dem if erzeuge oder direkt im if.</p>
</blockquote>
<p>Beide Male hat der Compiler den Audruck (4.0f / 3.0f) bereits vorher berechnet und abgespeichert. Das erste Mal allerdings als Float-Variable und das zweite Mal als Double-Konstante. Während der Vergleich mit der Float-Variablen noch (zufällig!) klappt, klappt er mit der Double-Konstante nicht.</p>
<p>viele grüße<br />
ralph</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2283985</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283985</guid><dc:creator><![CDATA[rkhb]]></dc:creator><pubDate>Fri, 28 Dec 2012 15:13:39 GMT</pubDate></item><item><title><![CDATA[Reply to float Vergleich on Fri, 28 Dec 2012 15:21:18 GMT]]></title><description><![CDATA[<pre><code>int desktopWidth  = GetSystemMetrics(SM_CXSCREEN); 
int desktopHeight = GetSystemMetrics(SM_CYSCREEN); 
if( desktopWidth * 3 ==  desktopHeight * 4) { 

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2283988</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283988</guid><dc:creator><![CDATA[nurMitInt]]></dc:creator><pubDate>Fri, 28 Dec 2012 15:21:18 GMT</pubDate></item></channel></rss>