<?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[Warum (unsigned int)(0.3*10.0) = 2 ?]]></title><description><![CDATA[<p>Hallo,</p>
<p>warum gibt folgendes Programm<br />
3 2 3<br />
aus?<br />
Ein typecast sollte doch eigentlich nur die Dezimalstellen abscheiden ?!<br />
Vermutlich gibts irgendwo Rechenfehler. Aber warum ist die Ausgabe von dem double dann nicht 2.9999999999999999 ??</p>
<p>ciao Knut</p>
<p>---</p>
<p>#include &lt;iostream&gt;<br />
using namespace std;</p>
<p>int main(int argc, char **argv) {<br />
double a = 0.3;<br />
double b = 10.0;<br />
cout &lt;&lt; (unsigned int)(0.3*10.0) &lt;&lt; &quot; &quot; &lt;&lt; (unsigned int)(a*b) &lt;&lt; &quot; &quot; &lt;&lt; (a*b) &lt;&lt; endl;<br />
return 0;<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/181340/warum-unsigned-int-0-3-10-0-2</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 07:12:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/181340.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 12 May 2007 16:38:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Warum (unsigned int)(0.3*10.0) = 2 ? on Sat, 12 May 2007 16:38:47 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>warum gibt folgendes Programm<br />
3 2 3<br />
aus?<br />
Ein typecast sollte doch eigentlich nur die Dezimalstellen abscheiden ?!<br />
Vermutlich gibts irgendwo Rechenfehler. Aber warum ist die Ausgabe von dem double dann nicht 2.9999999999999999 ??</p>
<p>ciao Knut</p>
<p>---</p>
<p>#include &lt;iostream&gt;<br />
using namespace std;</p>
<p>int main(int argc, char **argv) {<br />
double a = 0.3;<br />
double b = 10.0;<br />
cout &lt;&lt; (unsigned int)(0.3*10.0) &lt;&lt; &quot; &quot; &lt;&lt; (unsigned int)(a*b) &lt;&lt; &quot; &quot; &lt;&lt; (a*b) &lt;&lt; endl;<br />
return 0;<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1283599</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1283599</guid><dc:creator><![CDATA[knut312]]></dc:creator><pubDate>Sat, 12 May 2007 16:38:47 GMT</pubDate></item><item><title><![CDATA[Reply to Warum (unsigned int)(0.3*10.0) = 2 ? on Sat, 12 May 2007 16:44:57 GMT]]></title><description><![CDATA[<p>Das 2. soll 2 ausgeben? O.o</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1283605</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1283605</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sat, 12 May 2007 16:44:57 GMT</pubDate></item><item><title><![CDATA[Reply to Warum (unsigned int)(0.3*10.0) = 2 ? on Sat, 12 May 2007 17:14:48 GMT]]></title><description><![CDATA[<p>knut312 schrieb:</p>
<blockquote>
<p>Aber warum ist die Ausgabe von dem double dann nicht 2.9999999999999999 ??</p>
</blockquote>
<p>Die rundet dann wohl...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1283630</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1283630</guid><dc:creator><![CDATA[SG1]]></dc:creator><pubDate>Sat, 12 May 2007 17:14:48 GMT</pubDate></item><item><title><![CDATA[Reply to Warum (unsigned int)(0.3*10.0) = 2 ? on Sat, 12 May 2007 18:24:03 GMT]]></title><description><![CDATA[<pre><code>Thomas:~ Thomas$ cat &gt; test.c
#include &lt;iostream&gt;
using namespace std;

int main(int argc, char **argv) {
double a = 0.3;
double b = 10.0;
cout &lt;&lt; (unsigned int)(0.3*10.0) &lt;&lt; &quot; &quot; &lt;&lt; (unsigned int)(a*b) &lt;&lt; &quot; &quot; &lt;&lt; (a*b) &lt;&lt; endl;
return 0;
}
Thomas:~ Thomas$ g++ ./test.c -o testbin
Thomas:~ Thomas$ ./testbin
3 3 3
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1283657</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1283657</guid><dc:creator><![CDATA[Kenner&#x2F;&#x2F;]]></dc:creator><pubDate>Sat, 12 May 2007 18:24:03 GMT</pubDate></item><item><title><![CDATA[Reply to Warum (unsigned int)(0.3*10.0) = 2 ? on Sun, 13 May 2007 12:35:18 GMT]]></title><description><![CDATA[<p>wie kommst du auf 2 ? egal wie ich es mache ich kriege 3 raus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1284001</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1284001</guid><dc:creator><![CDATA[Stelfer]]></dc:creator><pubDate>Sun, 13 May 2007 12:35:18 GMT</pubDate></item><item><title><![CDATA[Reply to Warum (unsigned int)(0.3*10.0) = 2 ? on Sun, 13 May 2007 15:59:16 GMT]]></title><description><![CDATA[<p>hi,<br />
das liegt daran, dass 0.3 * 10 &lt; 3 ist. Siehe z.B.</p>
<pre><code class="language-cpp">double a = 0.3;
double b = 10.0;    //                                                    vvvvvvvv
cout &lt;&lt; (unsigned int)(0.3*10.0) &lt;&lt; &quot; &quot; &lt;&lt; (unsigned int)(a*b) &lt;&lt; &quot; &quot; &lt;&lt; (a*b) - 3 &lt;&lt; endl;

gibt bei mir mit gcc aus:   3 2 -1.110223024625157e-016
</code></pre>
<p>damit (unsigned int)(0.3*10.0) gleich 3 ergibt, muss (a*b) - 3 &gt;= 0 sein, es ist aber negativ, also ist a*b &lt; 3, also 2.xxxxx, und das wird auf 2 abgeschnitten.</p>
<p>vg tesu</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1284118</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1284118</guid><dc:creator><![CDATA[tesuji]]></dc:creator><pubDate>Sun, 13 May 2007 15:59:16 GMT</pubDate></item><item><title><![CDATA[Reply to Warum (unsigned int)(0.3*10.0) = 2 ? on Sun, 13 May 2007 17:06:02 GMT]]></title><description><![CDATA[<p>compiler abhängig.... find ich aber selber schwachsinnig vom gcc</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1284156</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1284156</guid><dc:creator><![CDATA[Stelfer]]></dc:creator><pubDate>Sun, 13 May 2007 17:06:02 GMT</pubDate></item><item><title><![CDATA[Reply to Warum (unsigned int)(0.3*10.0) = 2 ? on Sun, 13 May 2007 17:11:12 GMT]]></title><description><![CDATA[<p>Was soll daran schwachsinnig sein?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1284162</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1284162</guid><dc:creator><![CDATA[SG1]]></dc:creator><pubDate>Sun, 13 May 2007 17:11:12 GMT</pubDate></item><item><title><![CDATA[Reply to Warum (unsigned int)(0.3*10.0) = 2 ? on Sun, 13 May 2007 17:25:40 GMT]]></title><description><![CDATA[<p>Stelfer schrieb:</p>
<blockquote>
<p>compiler abhängig.... find ich aber selber schwachsinnig vom gcc</p>
</blockquote>
<p>Stelfer, mach dich schlau bei IEEE 754 !</p>
<p>von Ney</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1284170</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1284170</guid><dc:creator><![CDATA[nexperty]]></dc:creator><pubDate>Sun, 13 May 2007 17:25:40 GMT</pubDate></item><item><title><![CDATA[Reply to Warum (unsigned int)(0.3*10.0) = 2 ? on Sun, 13 May 2007 17:40:38 GMT]]></title><description><![CDATA[<p>damit meine ich:<br />
wenn ich es eingebe erwarte ich das richtige ergebnis, beim msvs gehts ja auch und da sind diese überinkommen nicht relevant ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1284178</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1284178</guid><dc:creator><![CDATA[Stelfer]]></dc:creator><pubDate>Sun, 13 May 2007 17:40:38 GMT</pubDate></item><item><title><![CDATA[Reply to Warum (unsigned int)(0.3*10.0) = 2 ? on Sun, 13 May 2007 17:49:46 GMT]]></title><description><![CDATA[<p>Es <em>ist</em> das richtige Ergebnis. Deine Erwartung ist nur falsch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1284182</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1284182</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Sun, 13 May 2007 17:49:46 GMT</pubDate></item><item><title><![CDATA[Reply to Warum (unsigned int)(0.3*10.0) = 2 ? on Sun, 13 May 2007 18:56:12 GMT]]></title><description><![CDATA[<p>[quote=&quot;.filmor&quot;]Es <em>ist</em> das richtige Ergebnis. Deine Erwartung ist nur falsch.[/quote</p>
<p>mathematisch ist das ergebnis falsch !<br />
man sollte immer auf etwas aufbauen ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1284224</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1284224</guid><dc:creator><![CDATA[Stelfer]]></dc:creator><pubDate>Sun, 13 May 2007 18:56:12 GMT</pubDate></item><item><title><![CDATA[Reply to Warum (unsigned int)(0.3*10.0) = 2 ? on Sun, 13 May 2007 19:33:13 GMT]]></title><description><![CDATA[<p>Mathematisch gibts keine endliche binäre Darstellung für 0,3. Sei froh, dass dir der Rechner dabei nicht um die Ohren fliegt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1284247</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1284247</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Sun, 13 May 2007 19:33:13 GMT</pubDate></item><item><title><![CDATA[Reply to Warum (unsigned int)(0.3*10.0) = 2 ? on Sun, 13 May 2007 19:50:04 GMT]]></title><description><![CDATA[<p>.filmor schrieb:</p>
<blockquote>
<p>Mathematisch gibts keine <strong>endliche binäre Darstellung</strong> für 0,3. Sei froh, dass dir der Rechner dabei nicht um die Ohren fliegt.</p>
</blockquote>
<p>das ist der punkt... es gibts nicht also warum macht gcc nicht gleich wie ms und macht 0,3*10 = 0,3</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1284262</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1284262</guid><dc:creator><![CDATA[Stelfer]]></dc:creator><pubDate>Sun, 13 May 2007 19:50:04 GMT</pubDate></item><item><title><![CDATA[Reply to Warum (unsigned int)(0.3*10.0) = 2 ? on Sun, 13 May 2007 19:54:57 GMT]]></title><description><![CDATA[<p>Stelfer schrieb:</p>
<blockquote>
<p>warum macht gcc nicht gleich wie ms und macht 0,3*10 = 0,3</p>
</blockquote>
<p>Das trau ich nichtmal MS zu, dass 0.3*10 = 0.3 <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
<p>Ansonsten mein gcc gibt mir überall 3 aus.</p>
<p>$ gcc --version<br />
gcc (GCC) 4.1.1 (Gentoo 4.1.1-r3)</p>
<p>und</p>
<p>$ gcc --version<br />
i686-apple-darwin8-gcc-4.0.1 (GCC) 4.0.1 (Apple Computer, Inc. build 5363)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1284267</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1284267</guid><dc:creator><![CDATA[Entenwickler]]></dc:creator><pubDate>Sun, 13 May 2007 19:54:57 GMT</pubDate></item><item><title><![CDATA[Reply to Warum (unsigned int)(0.3*10.0) = 2 ? on Sun, 13 May 2007 20:00:06 GMT]]></title><description><![CDATA[<p>Entenwickler schrieb:</p>
<blockquote>
<p>$ gcc --version<br />
gcc (GCC) 4.1.1 (Gentoo 4.1.1-r3)</p>
<p>und</p>
<p>$ gcc --version<br />
i686-apple-darwin8-gcc-4.0.1 (GCC) 4.0.1 (Apple Computer, Inc. build 5363)</p>
</blockquote>
<p>Yeah, genau damit hätte ich auch dienen können <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/1284270</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1284270</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Sun, 13 May 2007 20:00:06 GMT</pubDate></item><item><title><![CDATA[Reply to Warum (unsigned int)(0.3*10.0) = 2 ? on Mon, 14 May 2007 00:57:03 GMT]]></title><description><![CDATA[<p>Was ich hier &quot;schwachsinnig&quot; finde, ist mit floating-point Zahlen zu arbeiten, und genaue Ergebnisse zu erwarten.<br />
Wenn man 0.3*10==3 haben will muss man schon mit fixed-point/BCD/... rechnen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1284353</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1284353</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 14 May 2007 00:57:03 GMT</pubDate></item></channel></rss>