<?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[int-Cast nach Rundung zuverlässig?]]></title><description><![CDATA[<p>Hallo,<br />
folgendes beschäftigt mich gerade: Die Rundungsfunktionen floor() und ceil() liefern bekanntlich einen Gleitkommawert zurück. Oft will man aber das Ergebnis als int weiterverarbeiten, schreibt also etwas wie</p>
<pre><code>int i = (int) floor (x);
</code></pre>
<p>Kann es hier eigentlich passieren, dass das &quot;ganzzahlige Gleitkomma-Ergebnis&quot; von floor() nicht exakt als double dargestellt werden kann und der int-cast dann ein um eins vermindertes Ergebnis liefert? Könnte also z.B., wenn floor(x) 7.0 liefert, die 7.0 in Wirklichkeit etwas wie 6.999999999... sein und deshalb der int-Cast 6 liefern? Oder wird das durch Compiler- bzw. Sprachspezifikation bereits berücksichtigt und ausgeschlossen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/340372/int-cast-nach-rundung-zuverlässig</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Apr 2026 05:38:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/340372.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 03 Nov 2016 14:10:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to int-Cast nach Rundung zuverlässig? on Thu, 03 Nov 2016 14:10:32 GMT]]></title><description><![CDATA[<p>Hallo,<br />
folgendes beschäftigt mich gerade: Die Rundungsfunktionen floor() und ceil() liefern bekanntlich einen Gleitkommawert zurück. Oft will man aber das Ergebnis als int weiterverarbeiten, schreibt also etwas wie</p>
<pre><code>int i = (int) floor (x);
</code></pre>
<p>Kann es hier eigentlich passieren, dass das &quot;ganzzahlige Gleitkomma-Ergebnis&quot; von floor() nicht exakt als double dargestellt werden kann und der int-cast dann ein um eins vermindertes Ergebnis liefert? Könnte also z.B., wenn floor(x) 7.0 liefert, die 7.0 in Wirklichkeit etwas wie 6.999999999... sein und deshalb der int-Cast 6 liefern? Oder wird das durch Compiler- bzw. Sprachspezifikation bereits berücksichtigt und ausgeschlossen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2513996</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2513996</guid><dc:creator><![CDATA[Lutex]]></dc:creator><pubDate>Thu, 03 Nov 2016 14:10:32 GMT</pubDate></item><item><title><![CDATA[Reply to int-Cast nach Rundung zuverlässig? on Thu, 03 Nov 2016 17:38:59 GMT]]></title><description><![CDATA[<p>Die gängige Fließkomma-Darstellung IEEE 754 legt fest, dass <code>float</code> alle Ganzzahlen in und inklusive <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mo>±</mo><mo>(</mo><msup><mn>2</mn><mrow><mn>2</mn><mn>4</mn></mrow></msup><mo>)</mo></mrow><annotation encoding="application/x-tex">\pm (2^{24})</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="strut" style="height:0.8141079999999999em;"></span><span class="strut bottom" style="height:1.064108em;vertical-align:-0.25em;"></span><span class="base textstyle uncramped"><span class="mord">±</span><span class="mopen">(</span><span class="mord"><span class="mord mathrm">2</span><span class="vlist"><span style="top:-0.363em;margin-right:0.05em;"><span class="fontsize-ensurer reset-size5 size5"><span style="font-size:0em;">​</span></span><span class="reset-textstyle scriptstyle uncramped"><span class="mord scriptstyle uncramped"><span class="mord mathrm">2</span><span class="mord mathrm">4</span></span></span></span><span class="baseline-fix"><span class="fontsize-ensurer reset-size5 size5"><span style="font-size:0em;">​</span></span>​</span></span></span><span class="mclose">)</span></span></span></span> darstellen kann. In diesem Interval wirst du also keine Probleme haben. Sobald du mit Zahlen arbeitest, die sehr groß sind, wird auch die Genauigkeit entsprechend abnehmen, und es hat wenig Zweck, in solchen Größenordnungen über Differenzen von <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>1</mn></mrow><annotation encoding="application/x-tex">1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="strut" style="height:0.64444em;"></span><span class="strut bottom" style="height:0.64444em;vertical-align:0em;"></span><span class="base textstyle uncramped"><span class="mord mathrm">1</span></span></span></span> zu sprechen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2513997</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2513997</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Thu, 03 Nov 2016 17:38:59 GMT</pubDate></item><item><title><![CDATA[Reply to int-Cast nach Rundung zuverlässig? on Thu, 03 Nov 2016 15:16:55 GMT]]></title><description><![CDATA[<p>Der Cast an der Stelle ist übrigens vollkommen unnötig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2514004</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2514004</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 03 Nov 2016 15:16:55 GMT</pubDate></item><item><title><![CDATA[Reply to int-Cast nach Rundung zuverlässig? on Thu, 03 Nov 2016 15:33:20 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Der Cast an der Stelle ist übrigens vollkommen unnötig.</p>
</blockquote>
<p>Wollte gerade einen dummen Kommentar über Warnungen und so schreiben, hab's dann aber sicherheitshalber nochmals getestet. Und du hast recht. Keiner meiner Compiler gibt dafür eine Warnung aus. Aber wieso nicht? Bei implizitem Narrowing gibt der Compiler doch normalerweise Warnungen aus...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2514005</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2514005</guid><dc:creator><![CDATA[besserwisser]]></dc:creator><pubDate>Thu, 03 Nov 2016 15:33:20 GMT</pubDate></item><item><title><![CDATA[Reply to int-Cast nach Rundung zuverlässig? on Thu, 03 Nov 2016 16:17:22 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Der Cast an der Stelle ist übrigens vollkommen unnötig.</p>
</blockquote>
<p>funktional schon, aber zur Dokumentation hilfreich. Er zeigt, dass hier kein potenzieller Bug versteckt ist, sondern dass sich der Programmierer etwas dabei gedacht hat.</p>
<p>In diesem Fall ist es ziemlich offensichtlich, aber wenn statt floor jetzt eine Funktion aufgerufen wird, die wiederum floor verwendet, ist das schon nicht mehr auf den ersten Blick erkennbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2514010</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2514010</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Thu, 03 Nov 2016 16:17:22 GMT</pubDate></item><item><title><![CDATA[Reply to int-Cast nach Rundung zuverlässig? on Thu, 03 Nov 2016 16:27:08 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Der Cast an der Stelle ist übrigens vollkommen unnötig.</p>
</blockquote>
<p>Unnötig ja, &quot;vollkommen unnötig&quot; nein. So einen Cast explizit nochmal hinzuschreiben dokumentiert immerhin dass dieser beabsichtigt ist.<br />
Auch wenn da manche Leute eine Krise bekommen, findet man sowas z.B. in meinem Code ziemlich häufig (sogar solche Schätzchen wie <code>1.0 + static_cast&lt;double&gt;(1)</code> :D).</p>
<p>Finnegan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2514011</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2514011</guid><dc:creator><![CDATA[Finnegan]]></dc:creator><pubDate>Thu, 03 Nov 2016 16:27:08 GMT</pubDate></item><item><title><![CDATA[Reply to int-Cast nach Rundung zuverlässig? on Thu, 03 Nov 2016 16:55:26 GMT]]></title><description><![CDATA[<p>Finnegan schrieb:</p>
<blockquote>
<p>(sogar solche Schätzchen wie <code>1.0 + static_cast&lt;double&gt;(1)</code> :D).</p>
</blockquote>
<p>Womit wir wieder bei &quot;vollkommen unnoetig&quot; angelangt waeren <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2514012</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2514012</guid><dc:creator><![CDATA[icarus2]]></dc:creator><pubDate>Thu, 03 Nov 2016 16:55:26 GMT</pubDate></item><item><title><![CDATA[Reply to int-Cast nach Rundung zuverlässig? on Fri, 04 Nov 2016 16:28:29 GMT]]></title><description><![CDATA[<p>Also danke nochmal. Dass <strong>alle</strong> Ganzzahlen bis <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mo>±</mo><mo>(</mo><msup><mn>2</mn><mrow><mn>2</mn><mn>4</mn></mrow></msup><mo>)</mo></mrow><annotation encoding="application/x-tex">\pm (2^{24})</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="strut" style="height:0.8141079999999999em;"></span><span class="strut bottom" style="height:1.064108em;vertical-align:-0.25em;"></span><span class="base textstyle uncramped"><span class="mord">±</span><span class="mopen">(</span><span class="mord"><span class="mord mathrm">2</span><span class="vlist"><span style="top:-0.363em;margin-right:0.05em;"><span class="fontsize-ensurer reset-size5 size5"><span style="font-size:0em;">​</span></span><span class="reset-textstyle scriptstyle uncramped"><span class="mord scriptstyle uncramped"><span class="mord mathrm">2</span><span class="mord mathrm">4</span></span></span></span><span class="baseline-fix"><span class="fontsize-ensurer reset-size5 size5"><span style="font-size:0em;">​</span></span>​</span></span></span><span class="mclose">)</span></span></span></span> von <code>float</code> exakt dargestellt werden, war mir so noch nicht klar.</p>
<p>BTW: Ich hätte auch schwören können, dass die Zuweisung von float an int ohne Cast eine Warnung auslöst. Aber auch wenn dem nicht so ist, kann die Botschaft &quot;Ich will hier ganz bewusst die Nachkommastellen wegschneiden&quot; an andere Leute, die meinen Code lesen (oder an mich selbst in einem halben Jahr <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> ), eine sehr Wichtige sein. So ein Cast ist nicht überflüssig, nur weil er &quot;bloß&quot; für den Programmierer da ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2514094</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2514094</guid><dc:creator><![CDATA[Lutex]]></dc:creator><pubDate>Fri, 04 Nov 2016 16:28:29 GMT</pubDate></item></channel></rss>