<?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[Float liefert falschen Wert(?)]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich lese Temepraturdaten (Kelvin) und einige Daten die Datei betreffend aus einer Datei aus. Im Header der Datei werden einige Daten im Float Format gespeichert und die Temperaturdaten sind ebenfalls alle vom Float Datentyp.</p>
<p>Bei den Temperaturdaten bekomme ich nun allerdings ein Problem:<br />
Einige Daten liest er korrekt aus nur je nach Datei kommt er irgendwann an einen Punkt, wo ich nur noch den Wert -107374176.0000000 auslesen kann.<br />
Sieht vielleicht irgendwie nach einem &quot;Überlauf&quot; oder so aus? Habe es mit verschiedenen Dateien versucht, die jeweil verschiedene Daten enthalten. Der Fehler tritt an unterschiedlichen Stellen auf, als ob irgendwann mal ein Wert auftritt, den Float nicht verträgt.</p>
<p>Codelisting meiner Funktion zum auslesen von Float Datensätzen:</p>
<pre><code class="language-cpp">float xxx::readFloat(){
	float ret = 0;
	unsigned char buffer[sizeof(float)];
	fread((char*)&amp;buffer, 1, 4, file);
	memcpy(&amp;ret, buffer, sizeof(float)); 
	return ret;
}
</code></pre>
<p>Ich bin für jede Hilfe dankbar...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/234545/float-liefert-falschen-wert</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 10:20:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/234545.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 19 Feb 2009 09:57:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Float liefert falschen Wert(?) on Thu, 19 Feb 2009 09:57:44 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich lese Temepraturdaten (Kelvin) und einige Daten die Datei betreffend aus einer Datei aus. Im Header der Datei werden einige Daten im Float Format gespeichert und die Temperaturdaten sind ebenfalls alle vom Float Datentyp.</p>
<p>Bei den Temperaturdaten bekomme ich nun allerdings ein Problem:<br />
Einige Daten liest er korrekt aus nur je nach Datei kommt er irgendwann an einen Punkt, wo ich nur noch den Wert -107374176.0000000 auslesen kann.<br />
Sieht vielleicht irgendwie nach einem &quot;Überlauf&quot; oder so aus? Habe es mit verschiedenen Dateien versucht, die jeweil verschiedene Daten enthalten. Der Fehler tritt an unterschiedlichen Stellen auf, als ob irgendwann mal ein Wert auftritt, den Float nicht verträgt.</p>
<p>Codelisting meiner Funktion zum auslesen von Float Datensätzen:</p>
<pre><code class="language-cpp">float xxx::readFloat(){
	float ret = 0;
	unsigned char buffer[sizeof(float)];
	fread((char*)&amp;buffer, 1, 4, file);
	memcpy(&amp;ret, buffer, sizeof(float)); 
	return ret;
}
</code></pre>
<p>Ich bin für jede Hilfe dankbar...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1666235</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1666235</guid><dc:creator><![CDATA[Bennnno]]></dc:creator><pubDate>Thu, 19 Feb 2009 09:57:44 GMT</pubDate></item><item><title><![CDATA[Reply to Float liefert falschen Wert(?) on Thu, 19 Feb 2009 10:06:02 GMT]]></title><description><![CDATA[<p>Warum machst du es nicht so? Den buffer brauchst du doch gar nicht. Außerdem hast du den Größen mit dem Anzahl-Parameter vertauscht.</p>
<pre><code class="language-cpp">float xxx::readFloat(){
    float ret = 0;
    fread((char*)&amp;ret, sizeof(ret), 1, file);
    return ret;
}
</code></pre>
<p>Sind die Daten wirklich binär gespeichert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1666242</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1666242</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 19 Feb 2009 10:06:02 GMT</pubDate></item><item><title><![CDATA[Reply to Float liefert falschen Wert(?) on Thu, 19 Feb 2009 10:16:02 GMT]]></title><description><![CDATA[<p>Danke für die schnelle Antwort.</p>
<p>Gespeichert werden die Dateien von einem Programm. Ich gehe davon aus, dass diese binär gespeichert sind.</p>
<p>Die Lösung ist natürlich eleganter. Das Problem bleibt allerdings bzw. nun bekomme ich nur 0 Werte. Ich bin mir allerdings sicher, dass die Daten in der Datei richtig gespeichert und != 0 sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1666247</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1666247</guid><dc:creator><![CDATA[Bennnno]]></dc:creator><pubDate>Thu, 19 Feb 2009 10:16:02 GMT</pubDate></item><item><title><![CDATA[Reply to Float liefert falschen Wert(?) on Thu, 19 Feb 2009 10:25:02 GMT]]></title><description><![CDATA[<p>Naja, jetzt gäbe es nur noch anzumerken, dass du C Funktionen statt C++ Funktionen benutzt. Das hat aber sehr wahrscheinlich nichts mit deinem Problem zu tun, es gilt nur als &quot;unschön&quot; <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>Zu deinem Problem, bist du sicher, dass du an der richtigen Byteposition bist? Ein typischer Fehler beim Auslesen von binären Daten ist, dass man plötzlich um ein paar Bytes verrutscht, aus welchem Grund auch immer.</p>
<p>Hast du auch BE/LE (Endian) richtig beachtet, also sind die im File gleich, wie das System auf welchem du arbeitest?</p>
<p>Ansonsten, ist es schwer dir da zu helfen. Wenn alle Voraussetzungen richtig erfüllt sind, müsste der Code funktionieren <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>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1666254</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1666254</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Thu, 19 Feb 2009 10:25:02 GMT</pubDate></item><item><title><![CDATA[Reply to Float liefert falschen Wert(?) on Thu, 19 Feb 2009 10:32:40 GMT]]></title><description><![CDATA[<p>*Räusper* Ja das mit den C-Funktionen ist nicht die schönste Lösung, ich hatte aber mal einen ähnlichen Ansatz in C, den ich einfach wiederverwendet habe.</p>
<p>Die Byteposition ist defintiv richtig, da sich die ersten Werte oftmals auslesen lassen und die einfach alle hintereinander weggeschrieben sind. Deswegen verwirrt mich die ganze Sache auch etwas...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1666263</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1666263</guid><dc:creator><![CDATA[Bennnno]]></dc:creator><pubDate>Thu, 19 Feb 2009 10:32:40 GMT</pubDate></item><item><title><![CDATA[Reply to Float liefert falschen Wert(?) on Thu, 19 Feb 2009 11:23:06 GMT]]></title><description><![CDATA[<p>So, was ich jetzt noch mal gemacht habe ist, dass ich den File-Pointer X*4 Stellen weiter gesetzt haben, wo sonst immer nur die selben Zahlen kamen. Nun bekomme ich aber wieder richtige Werte und ab einer bestimmten Position dann wieder die selben.</p>
<p>Es sind 340*240 Werte. Müsste ich ab ner bestimmten Anzahl mal ne &quot;Pause&quot; machen oder so?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1666303</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1666303</guid><dc:creator><![CDATA[Bennnno]]></dc:creator><pubDate>Thu, 19 Feb 2009 11:23:06 GMT</pubDate></item><item><title><![CDATA[Reply to Float liefert falschen Wert(?) on Thu, 19 Feb 2009 11:34:27 GMT]]></title><description><![CDATA[<p>Die Zahl -107374176f entspricht dem Bitmuster von 4 Bytes mit je dem Wert 0xCC. Das ist im Debug-Modus von Visual-C++ ein Zeichen für eine uninitialisierte Speicherstelle. Ich würde also sagen, der fread-Aufruf ist an der Stelle fehlgeschlagen. Dateiende erreicht und nicht richtig abgefangen?<br />
(Meine erste Idee wäre gewesen, dass die Datei im Textmodus statt im Binärmodus geöffnet ist, aber das scheint es nicht zu sein.)</p>
<p>Falls das nicht hilft, mal eine Fehlerbehandlung einfügen:</p>
<pre><code class="language-cpp">// traditionell gehalten ;) hab gerade keine Lust auf Exceptions
if (fread((char*)&amp;buffer, 4, 1, file) &lt; 1)
{
  perror(&quot;fread&quot;);
  exit(EXIT_FAILURE);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1666308</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1666308</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Thu, 19 Feb 2009 11:34:27 GMT</pubDate></item><item><title><![CDATA[Reply to Float liefert falschen Wert(?) on Thu, 19 Feb 2009 11:45:00 GMT]]></title><description><![CDATA[<p>Mh, an der besagten Stelle springt er in die If Bedingung, gibt aber an &quot;fread: No error&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1666320</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1666320</guid><dc:creator><![CDATA[Bennnno]]></dc:creator><pubDate>Thu, 19 Feb 2009 11:45:00 GMT</pubDate></item><item><title><![CDATA[Reply to Float liefert falschen Wert(?) on Thu, 19 Feb 2009 11:56:25 GMT]]></title><description><![CDATA[<p>Also, ich bin es nun so umgangen, dass ich bei einem Error den Pointer um 4Bytes verschoben habe. Allerdings ist mir da nen bisschen unwohl bei. Könnte das evtl. nen Zeilenumbruch oä. verursacht haben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1666323</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1666323</guid><dc:creator><![CDATA[Bennnno]]></dc:creator><pubDate>Thu, 19 Feb 2009 11:56:25 GMT</pubDate></item><item><title><![CDATA[Reply to Float liefert falschen Wert(?) on Thu, 19 Feb 2009 11:56:27 GMT]]></title><description><![CDATA[<p>Bennnno schrieb:</p>
<blockquote>
<p>Könnte das evtl. nen Zeilenumbruch oä. verursachen?</p>
</blockquote>
<p>Zeilenumbuch? Seit wann hat eine binäre Datei einen Zeilenumbruch? Die hat ja noch nicht einmal Zeilen. Bist du sicher, dass du binär gespeicherte Daten hast? <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>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1666327</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1666327</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Thu, 19 Feb 2009 11:56:27 GMT</pubDate></item><item><title><![CDATA[Reply to Float liefert falschen Wert(?) on Thu, 19 Feb 2009 11:58:06 GMT]]></title><description><![CDATA[<p>Hoppla, das ist natürlich Unfug.</p>
<p>Aber irgendwoher kommt der Fehler beim lesen ja.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1666329</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1666329</guid><dc:creator><![CDATA[Bennnno]]></dc:creator><pubDate>Thu, 19 Feb 2009 11:58:06 GMT</pubDate></item><item><title><![CDATA[Reply to Float liefert falschen Wert(?) on Thu, 19 Feb 2009 12:09:23 GMT]]></title><description><![CDATA[<p>Da müsste man jetzt das Protokoll welches beim Schreiben der Datei genommen wird kennen. Evtl. werden ja an bestimmten Stellen Steuerzeichen oder Kontrollcodes eingesetzt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1666337</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1666337</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 19 Feb 2009 12:09:23 GMT</pubDate></item><item><title><![CDATA[Reply to Float liefert falschen Wert(?) on Thu, 19 Feb 2009 12:20:52 GMT]]></title><description><![CDATA[<p>Die Beschreibung des Dateiformats gibt leider nur genaue Aufschlüsselung über den Header der Datei. Daten sollen hintereinander in der Datei stehen.</p>
<p>Ich teste erstmal so weiter und hoffe, dass ich mit meiner Gummiband Lösung auch alle Daten bekomme.</p>
<p>Vielen Dank erstmal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1666345</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1666345</guid><dc:creator><![CDATA[Bennnno]]></dc:creator><pubDate>Thu, 19 Feb 2009 12:20:52 GMT</pubDate></item></channel></rss>