<?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[Kann mein PC nicht mehr Rechnen?]]></title><description><![CDATA[<p>Ich hab ein Problem welches ich nicht nachvollzihen kann.</p>
<pre><code>#include &lt;iostream&gt;

using namespace std;

int main()
{
    double y;

    y=(19/5+0.5)*10;
    cout &lt;&lt;y &lt;&lt;endl;

    float x;

    x=(19/5+0.5)*10;
    cout &lt;&lt;x &lt;&lt;endl;

    x=(19/5+0.5f)*10;
    cout &lt;&lt;x &lt;&lt;endl;

    return 0;
}
</code></pre>
<p>als ausgabe erhalte ich:</p>
<p>35<br />
35<br />
35<br />
35</p>
<p><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>
<p>19/5 = 3,8<br />
3,8 + 0,5= 4,3<br />
4,3 * 10 = 43</p>
<p>Kann mir wer sagen wie das kommen kann?<br />
Oder habe ich hier nen blöden Fehler drine? <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="😕"
    /> <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/339362/kann-mein-pc-nicht-mehr-rechnen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 12 Apr 2026 04:14:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/339362.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 24 Aug 2016 07:27:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Kann mein PC nicht mehr Rechnen? on Wed, 24 Aug 2016 07:27:13 GMT]]></title><description><![CDATA[<p>Ich hab ein Problem welches ich nicht nachvollzihen kann.</p>
<pre><code>#include &lt;iostream&gt;

using namespace std;

int main()
{
    double y;

    y=(19/5+0.5)*10;
    cout &lt;&lt;y &lt;&lt;endl;

    float x;

    x=(19/5+0.5)*10;
    cout &lt;&lt;x &lt;&lt;endl;

    x=(19/5+0.5f)*10;
    cout &lt;&lt;x &lt;&lt;endl;

    return 0;
}
</code></pre>
<p>als ausgabe erhalte ich:</p>
<p>35<br />
35<br />
35<br />
35</p>
<p><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>
<p>19/5 = 3,8<br />
3,8 + 0,5= 4,3<br />
4,3 * 10 = 43</p>
<p>Kann mir wer sagen wie das kommen kann?<br />
Oder habe ich hier nen blöden Fehler drine? <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="😕"
    /> <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/2506365</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2506365</guid><dc:creator><![CDATA[Sipps]]></dc:creator><pubDate>Wed, 24 Aug 2016 07:27:13 GMT</pubDate></item><item><title><![CDATA[Reply to Kann mein PC nicht mehr Rechnen? on Wed, 24 Aug 2016 07:34:20 GMT]]></title><description><![CDATA[<p>Das kommt daher, dass 19 / 5 eine Division mit Ganzzahlen ist:</p>
<p>19 / 5 = 3<br />
3 + 0.5 = 3.5<br />
3.5 * 10 = 35</p>
<p>et voilà</p>
<p>Edit:</p>
<p>Wenn du die Ganzzahldivision verhindern möchtest, kannst du es z. B. so schreiben:</p>
<pre><code>double y=(19.0/5+0.5)*10;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2506366</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2506366</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Wed, 24 Aug 2016 07:34:20 GMT</pubDate></item><item><title><![CDATA[Reply to Kann mein PC nicht mehr Rechnen? on Wed, 24 Aug 2016 07:34:16 GMT]]></title><description><![CDATA[<p>ahhh</p>
<p>ok danke für die schnelle Antwort <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2506367</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2506367</guid><dc:creator><![CDATA[Sipps]]></dc:creator><pubDate>Wed, 24 Aug 2016 07:34:16 GMT</pubDate></item><item><title><![CDATA[Reply to Kann mein PC nicht mehr Rechnen? on Thu, 25 Aug 2016 17:22:35 GMT]]></title><description><![CDATA[<p>Ist aber trotzdem interessant, oder?</p>
<p>Man würde ja erwarten, dass, wenn man eine Variable als &quot;float&quot; definiert,<br />
tatsächlich auch gleich die FPU angeworfen wird zum Zwischenspeichern, Rechen und natürlich auch Ausgeben.</p>
<p>Bei Haskell wird dieses Problem ein wenig anders angegangen. Wenn man die Zahlen in den ghci eingibt, ergibt sich folgendes:</p>
<pre><code>Prelude&gt; :set +t
Prelude&gt; (19/5 + 0.5) * 10
43.0
it :: Fractional a =&gt; a
</code></pre>
<p>Was passiert eigentlich, wenn man bei c++ int a = 5.5; schreibt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2506557</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2506557</guid><dc:creator><![CDATA[nachtfeuer]]></dc:creator><pubDate>Thu, 25 Aug 2016 17:22:35 GMT</pubDate></item><item><title><![CDATA[Reply to Kann mein PC nicht mehr Rechnen? on Thu, 25 Aug 2016 17:39:13 GMT]]></title><description><![CDATA[<p>Dann bekommt man einen int mit dem Wert 5.</p>
<p>Die rechte Seite weiß in C++ nichts von der linken Seite und das ist auch gut so. Man stelle sich nur mal vor:</p>
<pre><code>string foo = to_string(5 + 6)  // &quot;56&quot;, weil Stringaddition?
</code></pre>
<p>Und das ist noch ein super-simpler Fall.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2506561</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2506561</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 25 Aug 2016 17:39:13 GMT</pubDate></item><item><title><![CDATA[Reply to Kann mein PC nicht mehr Rechnen? on Thu, 25 Aug 2016 18:57:53 GMT]]></title><description><![CDATA[<p>nachtfeuer schrieb:</p>
<blockquote>
<p>Man würde ja erwarten, dass, wenn man eine Variable als &quot;float&quot; definiert,<br />
tatsächlich auch gleich die FPU angeworfen wird zum Zwischenspeichern, Rechen und natürlich auch Ausgeben.</p>
</blockquote>
<p>also wir haben gelernt, dass das eben nicht so ist, bzw. dass die fpu nur dann verwendet wird, wenn auch eine gleitkommazahl an der rechenoperation teilnimmt und das ist ja bei 19/5 nicht der fall.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2506572</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2506572</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Thu, 25 Aug 2016 18:57:53 GMT</pubDate></item><item><title><![CDATA[Reply to Kann mein PC nicht mehr Rechnen? on Thu, 25 Aug 2016 19:25:07 GMT]]></title><description><![CDATA[<p>nachtfeuer schrieb:</p>
<blockquote>
<p>Man würde ja erwarten, dass, wenn man eine Variable als &quot;float&quot; definiert,<br />
tatsächlich auch gleich die FPU angeworfen wird zum Zwischenspeichern, Rechen und natürlich auch Ausgeben.</p>
</blockquote>
<p>Nein. Compiler kennen viele Tricks, und Integer-Operationen sind in der Regel weniger teuer als Gleitkommaberechnungen. Selbst, wenn diese Integer-Operationen auf den ersten Blick sehr komplex erscheinen.</p>
<p>Das wussten auch die <a href="https://en.wikipedia.org/wiki/Fast_inverse_square_root#Overview_of_the_code" rel="nofollow">Entwickler von Doom</a>. Anstatt dass sie Gleitkommazahlen verwenden, haben sie mit Bitshifting eine Lösung gefunden, die nahe genug am Ergebnis war.</p>
<p>nachtfeuer schrieb:</p>
<blockquote>
<p>Was passiert eigentlich, wenn man bei c++ int a = 5.5; schreibt?</p>
</blockquote>
<p>Darauf hat dir SeppJ schon eine Antwort gegeben, aber ich habe da noch was in C nachgeprüft:</p>
<pre><code>#include &lt;stdio.h&gt;

int main(void)
{
        printf(&quot;%f\n&quot;,5.5f);
        return 0;
}
</code></pre>
<p>Aus der Übergabe von 5.5f macht der Compiler:</p>
<pre><code>movabs rax,0x4016000000000000
</code></pre>
<p>5.5f siehst du gar nicht mehr, nur noch 0x4016000000000000.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2506584</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2506584</guid><dc:creator><![CDATA[dachschaden]]></dc:creator><pubDate>Thu, 25 Aug 2016 19:25:07 GMT</pubDate></item><item><title><![CDATA[Reply to Kann mein PC nicht mehr Rechnen? on Thu, 25 Aug 2016 20:06:31 GMT]]></title><description><![CDATA[<p>dachschaden schrieb:</p>
<blockquote>
<p>5.5f siehst du gar nicht mehr, nur noch 0x4016000000000000.</p>
</blockquote>
<p>Du meinst, der Compiler versteht Literale und printf? Ich verstehe nicht, was das mit dem Thema zu tun hat.</p>
<p>Erklärung für andere Leser: 0x4016000000000000 ist 5.5 (also double).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2506588</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2506588</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 25 Aug 2016 20:06:31 GMT</pubDate></item><item><title><![CDATA[Reply to Kann mein PC nicht mehr Rechnen? on Thu, 25 Aug 2016 20:10:11 GMT]]></title><description><![CDATA[<p>gleitkommazahlenformat mit exponent und mantisse?</p>
<p>edit: eben</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2506589</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2506589</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Thu, 25 Aug 2016 20:10:11 GMT</pubDate></item><item><title><![CDATA[Reply to Kann mein PC nicht mehr Rechnen? on Thu, 25 Aug 2016 20:24:14 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Du meinst, der Compiler versteht Literale und printf? Ich verstehe nicht, was das mit dem Thema zu tun hat.</p>
</blockquote>
<p>Es war eine Ergänzung zu der Erwartung, dass der Compiler bei Gleitkommaoperationen direkt spezielle FPU-Instruktionen generiert. Tut er in dem TE-Beispiel nicht, weil mit Integeroperanden gearbeitet wird. Aber selbst wenn mit Gleitkommaoperanden gearbeitet wird, müssen keine FPU-Instruktionen generiert werden, wenn der Compiler erkennt, dass das Ergebnis auch mit simpleren Operationen berechnet werden kann.</p>
<p>HansKlaus schrieb:</p>
<blockquote>
<p>gleitkommazahlenformat mit exponent und mantisse?</p>
</blockquote>
<p><a href="https://en.wikipedia.org/wiki/IEEE_floating_point" rel="nofollow">Nach IEEE754.</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2506590</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2506590</guid><dc:creator><![CDATA[dachschaden]]></dc:creator><pubDate>Thu, 25 Aug 2016 20:24:14 GMT</pubDate></item><item><title><![CDATA[Reply to Kann mein PC nicht mehr Rechnen? on Fri, 26 Aug 2016 05:07:06 GMT]]></title><description><![CDATA[<p>Hier wird ja gar nicht gerechnet, erst später von dem printf, dass man hier gar nicht sieht. Wundert mich sogar ein bisschen, dass das nicht zu puts(&quot;5.5&quot;) optimiert wurde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2506612</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2506612</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 26 Aug 2016 05:07:06 GMT</pubDate></item><item><title><![CDATA[Reply to Kann mein PC nicht mehr Rechnen? on Fri, 26 Aug 2016 07:40:52 GMT]]></title><description><![CDATA[<p>printf würde sich vermutlich über 19/5 und %f (für Gleitkommaausgabe)(und keine weiteren Hilfen) beschweren.</p>
<p>In den 70er Jahren waren Fließkommaprozessoren noch nicht so verbreitet. Beim Intel konnte man einen als Zusatz kaufen oder eine (langsame) Softwaresimulation nutzen.</p>
<p>Intel (und Kompatible) haben mittlerweile sehr viele Hardware-Datentypen parat. Ein wenig Automagie wäre nicht so verkehrt? Wo anfangen?</p>
<p>Man könnte noch fragen: Was hat der Compiler (oder die Programmiersprache)(wenn schon Int) mit dem Rest von 19/5 gemacht?</p>
<p>(Hardwaresimulation in Haskell:<br />
(ghci)</p>
<pre><code>Prelude&gt; let divmod a b = (div a b, mod a b)
Prelude&gt; divmod 19 5
(3,4)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2506625</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2506625</guid><dc:creator><![CDATA[nachtfeuer]]></dc:creator><pubDate>Fri, 26 Aug 2016 07:40:52 GMT</pubDate></item><item><title><![CDATA[Reply to Kann mein PC nicht mehr Rechnen? on Fri, 26 Aug 2016 09:30:00 GMT]]></title><description><![CDATA[<p>ich würde eher sagen, dass da ein cast durchgeführt wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2506640</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2506640</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Fri, 26 Aug 2016 09:30:00 GMT</pubDate></item><item><title><![CDATA[Reply to Kann mein PC nicht mehr Rechnen? on Fri, 26 Aug 2016 09:33:10 GMT]]></title><description><![CDATA[<p>HansKlaus schrieb:</p>
<blockquote>
<p>ich würde eher sagen, dass da ein cast durchgeführt wird.</p>
</blockquote>
<p>Da wird gar nichts durchgeführt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2506644</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2506644</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 26 Aug 2016 09:33:10 GMT</pubDate></item></channel></rss>