<?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[Problem mit Konvertierung float -&amp;gt; long -&amp;gt; float]]></title><description><![CDATA[<p>Hallo</p>
<p>Warum funktioniert der Code nicht wenn der Nachkommateil von f etwa &gt; .4 ist?<br />
Und wie kann man ihn zum Funktionieren brigen?</p>
<pre><code class="language-cpp">float f = 40.4f;
long result = *reinterpret_cast&lt;long*&gt;(&amp;f);
result = swap32(result); // Swap32 vertauscht die Bytes einer 32-Bit-Variablen.
result = swap32(result);
f = *reinterpret_cast&lt;float*&gt;(&amp;result);
std::cout &lt;&lt; f &lt;&lt; std::endl;
</code></pre>
<p>Eigentlich erwartet man dass f bei der Ausgabe auch den Wert von 40.4 hat aber bei mir steht da -1.#QNAN</p>
<p>Das Problem tritt auch bei C-Casts. Also wenn ich z.b. <em>((long</em>)&amp;f) schreibe. Nur tritt es erst bei höherem Nachkommawert auf.</p>
<p>Quelltext von swap32: Ich nehme mal an dass er funktioniert. Habe ihn aus dem SDL-Quelltext.</p>
<pre><code class="language-cpp">inline long swap32(long x)
{
   return (x&lt;&lt;24) | ((x&lt;&lt;8) &amp; 0x00FF0000) | ((x&gt;&gt;8) &amp; 0x0000FF00) | (x&gt;&gt;24);
}
</code></pre>
<p>Als Compiler benutze ich mingw (gcc) 3.4.5</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/150189/problem-mit-konvertierung-float-gt-long-gt-float</link><generator>RSS for Node</generator><lastBuildDate>Sat, 05 Sep 2026 12:03:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/150189.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 13 Jun 2006 22:34:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit Konvertierung float -&amp;gt; long -&amp;gt; float on Tue, 13 Jun 2006 22:34:01 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Warum funktioniert der Code nicht wenn der Nachkommateil von f etwa &gt; .4 ist?<br />
Und wie kann man ihn zum Funktionieren brigen?</p>
<pre><code class="language-cpp">float f = 40.4f;
long result = *reinterpret_cast&lt;long*&gt;(&amp;f);
result = swap32(result); // Swap32 vertauscht die Bytes einer 32-Bit-Variablen.
result = swap32(result);
f = *reinterpret_cast&lt;float*&gt;(&amp;result);
std::cout &lt;&lt; f &lt;&lt; std::endl;
</code></pre>
<p>Eigentlich erwartet man dass f bei der Ausgabe auch den Wert von 40.4 hat aber bei mir steht da -1.#QNAN</p>
<p>Das Problem tritt auch bei C-Casts. Also wenn ich z.b. <em>((long</em>)&amp;f) schreibe. Nur tritt es erst bei höherem Nachkommawert auf.</p>
<p>Quelltext von swap32: Ich nehme mal an dass er funktioniert. Habe ihn aus dem SDL-Quelltext.</p>
<pre><code class="language-cpp">inline long swap32(long x)
{
   return (x&lt;&lt;24) | ((x&lt;&lt;8) &amp; 0x00FF0000) | ((x&gt;&gt;8) &amp; 0x0000FF00) | (x&gt;&gt;24);
}
</code></pre>
<p>Als Compiler benutze ich mingw (gcc) 3.4.5</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1077250</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077250</guid><dc:creator><![CDATA[cppfan]]></dc:creator><pubDate>Tue, 13 Jun 2006 22:34:01 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Konvertierung float -&amp;gt; long -&amp;gt; float on Tue, 13 Jun 2006 22:47:16 GMT]]></title><description><![CDATA[<p>ich kann mir nie merken, ob &gt;&gt; arithmetisch oder logisch durchgeführt wird (der standard schreibt es nicht vor) - das ist einer der gründe, warum ich grundsätzlich shift-operatioonen mit vorzeichenbehafteten zahlen aus dem weg gehe. wenn &gt;&gt; arithmetisch arbeitet, ist das beschriebene verhalten jedenfalls nicht verwunderlich. fürhre das ganze mit vorzeichenlosen typen aus und komm dann wieder <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1077254</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077254</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 13 Jun 2006 22:47:16 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Konvertierung float -&amp;gt; long -&amp;gt; float on Tue, 13 Jun 2006 22:56:27 GMT]]></title><description><![CDATA[<p>Es funktioniert!!! Danke, du bist mein Retter. <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="🙂"
    /> <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="🙂"
    /> <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>Jetzt kann ich mich beruhigt schlafen legen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1077257</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077257</guid><dc:creator><![CDATA[cppfan]]></dc:creator><pubDate>Tue, 13 Jun 2006 22:56:27 GMT</pubDate></item></channel></rss>