<?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[Typenumwandlung]]></title><description><![CDATA[<p>Hallo,<br />
in meinem Buch steht folgendes:</p>
<pre><code class="language-cpp">short size(512); double erg, x=1.5;
erg=size/10*x;
</code></pre>
<p>Dann steht zuerst wird 512/10 berechnet. Das würde 50 ergeben, und in Double konvertiert werden, bevor es mit x multipliziert wird. Aber wieso 50 kommt da nicht 51 raus?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/257484/typenumwandlung</link><generator>RSS for Node</generator><lastBuildDate>Thu, 10 Sep 2026 06:25:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/257484.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 29 Dec 2009 12:20:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Typenumwandlung on Tue, 29 Dec 2009 12:20:27 GMT]]></title><description><![CDATA[<p>Hallo,<br />
in meinem Buch steht folgendes:</p>
<pre><code class="language-cpp">short size(512); double erg, x=1.5;
erg=size/10*x;
</code></pre>
<p>Dann steht zuerst wird 512/10 berechnet. Das würde 50 ergeben, und in Double konvertiert werden, bevor es mit x multipliziert wird. Aber wieso 50 kommt da nicht 51 raus?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1829254</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1829254</guid><dc:creator><![CDATA[Felix.]]></dc:creator><pubDate>Tue, 29 Dec 2009 12:20:27 GMT</pubDate></item><item><title><![CDATA[Reply to Typenumwandlung on Tue, 29 Dec 2009 13:08:12 GMT]]></title><description><![CDATA[<p>Nein, es würde als erstes zu einem int gecastet werden, weil weder 512, noch 10 vom Typ double sind.</p>
<p>Um dies zu überprüfen, kannst du folgendes machen:</p>
<pre><code class="language-cpp">std::cout.setf(std::ios_base::boolalpha); // Ausgabe von bool-Werten: true/false, anstatt 1/0
std::cout &lt;&lt; &quot;short size/10 == double: &quot; &lt;&lt; (typeid(size/10) == typeid(double)) &lt;&lt; std::endl;
std::cout &lt;&lt; &quot;short size/10 == int: &quot; &lt;&lt; (typeid(size/10) == typeid(int)) &lt;&lt; std::endl;
</code></pre>
<p>Ausgabe:<br />
`short size/10 == double: false</p>
<p>short size/10 == int: true`</p>
<p>Um einen Cast nach double zu erreichen, könntest du zum einen <code>size</code> als double deklarieren oder aber die Genauigkeit der 10 verändern, damit wenigstens eine der beiden Zahlen vom Typ double sind: <code>10.0</code></p>
<p>Überprüfen:</p>
<pre><code class="language-cpp">std::cout.setf(std::ios_base::boolalpha);
std::cout &lt;&lt; &quot;short size/10.0 == double: &quot; &lt;&lt; (typeid(size/10.0) == typeid(double)) &lt;&lt; std::endl;
// oder..
double size = 512.0; // .0 ist optional, meiner Meinung nach ist es aber dadurch besser sichtbar, dass es sich um eine Variable des Typs double handelt
std::cout.setf(std::ios_base::boolalpha);
std::cout &lt;&lt; &quot;double size/10 == double: &quot; &lt;&lt; typeid(size/10) == typeid(double)) &lt;&lt; std::endl;
</code></pre>
<p>Ausgabe:<br />
`</p>
<p>short size/10.0 == double: true</p>
<p>double size/10 == double: true</p>
<p>`</p>
<p>Warum da nun - vom fehlenden Cast nach double mal abgesehen - 50 anstatt von 51 rauskommen soll, verstehe ich aber nicht, denn bei mir ist 512/10 = 51(.2 &lt;- &quot;abgeschnitten&quot;, weil nach int gecastet), dh. es sollte am Ende 76.5 herauskommen (51 * 1.5 = (dank diesmal vorhandenem double korrekt gecastet) 76.5) bzw. bei komplett richtiger Rechnung: 51.2 * 1.5 = 76.8)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1829285</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1829285</guid><dc:creator><![CDATA[Castaufklärer]]></dc:creator><pubDate>Tue, 29 Dec 2009 13:08:12 GMT</pubDate></item><item><title><![CDATA[Reply to Typenumwandlung on Tue, 29 Dec 2009 18:41:06 GMT]]></title><description><![CDATA[<p>genau so hätte ich das auch gesehen. Da ist dem Buch(C++ lernen und professionell anwenden) wohl ein Fehler drinnen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1829490</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1829490</guid><dc:creator><![CDATA[Felix.]]></dc:creator><pubDate>Tue, 29 Dec 2009 18:41:06 GMT</pubDate></item></channel></rss>