<?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[Wieso funktioniert mein Aufrunden nicht?]]></title><description><![CDATA[<p>Hi Leute,</p>
<p>Ich bin noch relativ neu in C++ und weiß absolut nicht was ich falsch mache bzw wie ich das Problem umgehen kann.</p>
<p>Aufgabe ist Fassungsvermögen n, sowie die bestellte Anzahl von Litern (Fassungsvermögen soll frei wählbar sein) einzulesen und die benötigten Fässer auszugeben.<br />
Was mir dabei Kopfzerbrechen bereitet ist das aufrunden (was nötig ist denn z.b 1.5 Fässer sind ja trotzdem 2 Fässer). Mein Ansatz:</p>
<pre><code>double n, Anzahl, Aufrunder;
Anzahl = Liter/n;
Aufrunder = Anzahl - int(Anzahl);
Aufrunder = 1-Aufrunder;
cout &lt;&lt; Anzahl + Aufrunder;
</code></pre>
<p>Ich bekomm keine Fehlermeldung sondern nur falsche Ergebnisse also liegts vermutlich an meiner Rechnung aber für mich macht die Sinn <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Ich hoffe ihr könnt mir helfen!<br />
Cheers,<br />
Fluegelnuss</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/328636/wieso-funktioniert-mein-aufrunden-nicht</link><generator>RSS for Node</generator><lastBuildDate>Tue, 07 Jul 2026 13:07:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/328636.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 20 Oct 2014 17:01:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wieso funktioniert mein Aufrunden nicht? on Mon, 20 Oct 2014 17:01:19 GMT]]></title><description><![CDATA[<p>Hi Leute,</p>
<p>Ich bin noch relativ neu in C++ und weiß absolut nicht was ich falsch mache bzw wie ich das Problem umgehen kann.</p>
<p>Aufgabe ist Fassungsvermögen n, sowie die bestellte Anzahl von Litern (Fassungsvermögen soll frei wählbar sein) einzulesen und die benötigten Fässer auszugeben.<br />
Was mir dabei Kopfzerbrechen bereitet ist das aufrunden (was nötig ist denn z.b 1.5 Fässer sind ja trotzdem 2 Fässer). Mein Ansatz:</p>
<pre><code>double n, Anzahl, Aufrunder;
Anzahl = Liter/n;
Aufrunder = Anzahl - int(Anzahl);
Aufrunder = 1-Aufrunder;
cout &lt;&lt; Anzahl + Aufrunder;
</code></pre>
<p>Ich bekomm keine Fehlermeldung sondern nur falsche Ergebnisse also liegts vermutlich an meiner Rechnung aber für mich macht die Sinn <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Ich hoffe ihr könnt mir helfen!<br />
Cheers,<br />
Fluegelnuss</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2423032</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2423032</guid><dc:creator><![CDATA[flügelnuss]]></dc:creator><pubDate>Mon, 20 Oct 2014 17:01:19 GMT</pubDate></item><item><title><![CDATA[Reply to Wieso funktioniert mein Aufrunden nicht? on Mon, 20 Oct 2014 17:14:20 GMT]]></title><description><![CDATA[<pre><code>// include &lt;cmath&gt;

double roundMeUp = 1.5;
double ceiling = std::ceil(roundMeUp);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2423036</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2423036</guid><dc:creator><![CDATA[5cript]]></dc:creator><pubDate>Mon, 20 Oct 2014 17:14:20 GMT</pubDate></item><item><title><![CDATA[Reply to Wieso funktioniert mein Aufrunden nicht? on Mon, 20 Oct 2014 17:56:50 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/31396">@flügelnuss</a><br />
Die Lösung hast du ja schon.</p>
<p>Wo deine Variante versagt sind Fälle wo es sich genau ausgeht.<br />
Also Liter = 6 und n = 3 bekommst du Anzahl = 2.0.<br />
Dann wird <code>Aufrunder</code> erstmal 2.0 - 2.0 = 0.0, und im zweiten Schritt wird <code>Aufrunder</code> dann 1.0 - 0.0 = 1.0, und dein Ergebnis ist um eins zu hoch.</p>
<p>Wenn du auf fertige Funktionen wie <code>ceil</code> verzichten willst, gibt es einen recht einfachen Weg. Und zwar erstmal einfach konvertieren (was die Nachkommastellen verwirft, bei Zahlen &gt; 0 also abrundet), und dann, aber nur wenn nötig, eins draufaddieren.<br />
Also</p>
<pre><code class="language-cpp">double n, Anzahl;
long long AnzahlInt;
Anzahl = Liter/n;
AnzahlInt = Anzahl;
if (AnzahlInt &lt; Anzahl)
    AnzahlInt++;
cout &lt;&lt; AnzahlInt;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2423040</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2423040</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 20 Oct 2014 17:56:50 GMT</pubDate></item><item><title><![CDATA[Reply to Wieso funktioniert mein Aufrunden nicht? on Mon, 20 Oct 2014 18:44:19 GMT]]></title><description><![CDATA[<p>Alternativ auch:</p>
<pre><code>AnzahlInt = Anzahl + 0.5;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2423053</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2423053</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Mon, 20 Oct 2014 18:44:19 GMT</pubDate></item><item><title><![CDATA[Reply to Wieso funktioniert mein Aufrunden nicht? on Mon, 20 Oct 2014 18:58:24 GMT]]></title><description><![CDATA[<p>Nathan schrieb:</p>
<blockquote>
<p>Alternativ auch:</p>
<pre><code>AnzahlInt = Anzahl + 0.5;
</code></pre>
</blockquote>
<p>Nein. Das rundet aber es rundet nicht auf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2423054</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2423054</guid><dc:creator><![CDATA[Fytch]]></dc:creator><pubDate>Mon, 20 Oct 2014 18:58:24 GMT</pubDate></item><item><title><![CDATA[Reply to Wieso funktioniert mein Aufrunden nicht? on Mon, 20 Oct 2014 18:59:40 GMT]]></title><description><![CDATA[<p>asfdlol schrieb:</p>
<blockquote>
<p>Nathan schrieb:</p>
<blockquote>
<p>Alternativ auch:</p>
<pre><code>AnzahlInt = Anzahl + 0.5;
</code></pre>
</blockquote>
<p>Nein. Das rundet aber es rundet nicht auf.</p>
</blockquote>
<p>Stimmt, explizit Aufrunden war gefragt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2423055</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2423055</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Mon, 20 Oct 2014 18:59:40 GMT</pubDate></item><item><title><![CDATA[Reply to Wieso funktioniert mein Aufrunden nicht? on Mon, 20 Oct 2014 19:31:23 GMT]]></title><description><![CDATA[<p>Genau.<br />
Und dazu müsste man &quot;1.0 weniger 1 ULP&quot; draufaddieren.<br />
Also quasi</p>
<pre><code class="language-cpp">long long AnzahlInt = nextafter(Anzahl, 0) + 1.0;
</code></pre>
<p>Wäre mir aber zu funky. Die andere Variante finde ich einfacher.<br />
(Vor allem bin ich mir nichtmal 100% sicher ob das in allen Fällen korrekt funktioniert. Dazu müsste ich mir erstmal die genauen Regeln zu IEEE Floating-Point Berechnungen durchlesen.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2423057</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2423057</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 20 Oct 2014 19:31:23 GMT</pubDate></item></channel></rss>