<?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[eine Rechnung, zwei Ergebnisse]]></title><description><![CDATA[<p>Hallo,<br />
ich habe seit Kurzem angefangen, mich mit C++ zu beschäftigen.</p>
<p>Ich hab ein Programm geschrieben, das folgende Rechnung ausführt:</p>
<p>(in Worten: Fünf ZweiDrittel minus 117 geteilt durch 33)</p>
<pre><code>cout.precision(16);
cout&lt;&lt;5+2/3-((117)/(3*11));
</code></pre>
<p>Zu Meiner Überraschung kam genau 2 raus, obwohl 2,121212121212 rauskommen müsste. Gut, Rundungsfehler dachte ich.</p>
<p>Dann habe ich die Rechnung ein wenig umgestellt:</p>
<pre><code>cout.precision(16);
long double test,test2,test3,test4;
test =5+2/3;
test2=117;
test3=3*11;
test4=test-(test2/test3);
cout&lt;&lt;test4;
</code></pre>
<p>Als Ergebnis für test4 kommt hier 1,454545454545 raus (was für einen Rundungsfehler doch schon ziemlich krass wäre).</p>
<p>Ich habe schon etliche Klammer hinzugefügt und wieder weggenommen, ausdrücke wie 3*11 zusammengefasst, das programm dauernd neu kompliert, den Variabelntyp zu float bzw Double geändert, usw, aber ohne Veränderung des Ergebnisses.<br />
Achja, ich benutze den CodeBlocks-Compiler.</p>
<p>Wo liegt mein Fehler? :&gt;</p>
<p>mfg</p>
<p>Satru</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/203365/eine-rechnung-zwei-ergebnisse</link><generator>RSS for Node</generator><lastBuildDate>Wed, 07 Oct 2026 11:00:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/203365.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 21 Jan 2008 22:20:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to eine Rechnung, zwei Ergebnisse on Mon, 21 Jan 2008 22:20:18 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe seit Kurzem angefangen, mich mit C++ zu beschäftigen.</p>
<p>Ich hab ein Programm geschrieben, das folgende Rechnung ausführt:</p>
<p>(in Worten: Fünf ZweiDrittel minus 117 geteilt durch 33)</p>
<pre><code>cout.precision(16);
cout&lt;&lt;5+2/3-((117)/(3*11));
</code></pre>
<p>Zu Meiner Überraschung kam genau 2 raus, obwohl 2,121212121212 rauskommen müsste. Gut, Rundungsfehler dachte ich.</p>
<p>Dann habe ich die Rechnung ein wenig umgestellt:</p>
<pre><code>cout.precision(16);
long double test,test2,test3,test4;
test =5+2/3;
test2=117;
test3=3*11;
test4=test-(test2/test3);
cout&lt;&lt;test4;
</code></pre>
<p>Als Ergebnis für test4 kommt hier 1,454545454545 raus (was für einen Rundungsfehler doch schon ziemlich krass wäre).</p>
<p>Ich habe schon etliche Klammer hinzugefügt und wieder weggenommen, ausdrücke wie 3*11 zusammengefasst, das programm dauernd neu kompliert, den Variabelntyp zu float bzw Double geändert, usw, aber ohne Veränderung des Ergebnisses.<br />
Achja, ich benutze den CodeBlocks-Compiler.</p>
<p>Wo liegt mein Fehler? :&gt;</p>
<p>mfg</p>
<p>Satru</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1440968</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1440968</guid><dc:creator><![CDATA[Satru]]></dc:creator><pubDate>Mon, 21 Jan 2008 22:20:18 GMT</pubDate></item><item><title><![CDATA[Reply to eine Rechnung, zwei Ergebnisse on Mon, 21 Jan 2008 22:29:39 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">cout.precision(16);
        cout &lt;&lt; 5.0+2.0/3.0-117.0/(3.0*11.0);
</code></pre>
<p>Das Ergebnis von 2/3 ist 0, da 2 und 3 sind vom Typ int, es sind also ganze Zahlen!<br />
Das Ergebnis von 2.0/3.0 ist 0.666 das ist das was du willst, diese Zahlen sind dann vom Typ float!<br />
Du musst also eine der beiden Zahlen vor der Division jeweils<br />
in eine Flieskommzahl umwandeln damit du das Ergebnis bekommst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1440972</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1440972</guid><dc:creator><![CDATA[Mario Sandler]]></dc:creator><pubDate>Mon, 21 Jan 2008 22:29:39 GMT</pubDate></item><item><title><![CDATA[Reply to eine Rechnung, zwei Ergebnisse on Mon, 21 Jan 2008 22:33:15 GMT]]></title><description><![CDATA[<p>In C++ musst du unterscheiden zwischen Ganzzahlen und Kommazahlen. 'int' und 'long' z.B. können nur ganze Zahlen darstellen, float und double Kommazahlen. Ausdrücke wie '1' oder '123' sind Ganzzahlen, Ausdrücke wie '2/3' ist eine Division von Ganzzahlen und hat das Ergebnis 0 (Nachkommateil fällt weg). Du solltest eher float oder double als Datentypen benutzen, dazu '2./3.' (oder auch '2.f/3.f'), der Punkt führt dazu, dass die entsprechende Zahl als Kommazahl interpretiert wird, kommt dann also wirklich 0.6666666666 raus.<br />
Beachten muss man aber auch noch, dass in float und double aufgrund des Formats nicht alle Zahlen 'korrekt' dargestellt werden können, '1./10.', was 0.1 ergeben würde, wird dann z.B. intern als 0.099999999999999 dargestellt. Das muss man bei Vergleichen oder der Ausgabe berücksichtigen, dann läuft alles glatt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Achso, das mit 0.1 vs 0.0999999999 war nur ein Beispiel, weiß grad nicht, ob's in diesem Fall so ist, könnte auch glatt 0.1 sein oder 0.1000000000001 oder so..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1440973</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1440973</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Mon, 21 Jan 2008 22:33:15 GMT</pubDate></item><item><title><![CDATA[Reply to eine Rechnung, zwei Ergebnisse on Mon, 21 Jan 2008 22:38:09 GMT]]></title><description><![CDATA[<p>Vielen Dank für die schnelle Antwort <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>was für ein dummer Fehler :&gt;</p>
<p>dann kann ich ja jetzt munter weiter programmieren <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/1440974</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1440974</guid><dc:creator><![CDATA[Satru]]></dc:creator><pubDate>Mon, 21 Jan 2008 22:38:09 GMT</pubDate></item></channel></rss>