<?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[Bei Subtraktion von float kommt es zu Fehlern]]></title><description><![CDATA[<p>Hallo. Ich habe folgendes Problem.</p>
<p>Wenn ich 2 floats miteinander Subtrahiere tritt folgendes auf.</p>
<p>variable a beinhaltet 50.7820<br />
variable b beinhaltet 50.7716</p>
<p>wenn ich jetzt a - b rechne kommt das hier raus: 0.0104027<br />
anstatt einfach 0.0104</p>
<p>Woran liegt das? Wie kann ich das verhindern?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/250928/bei-subtraktion-von-float-kommt-es-zu-fehlern</link><generator>RSS for Node</generator><lastBuildDate>Tue, 15 Sep 2026 18:53:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/250928.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 26 Sep 2009 15:12:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Bei Subtraktion von float kommt es zu Fehlern on Sat, 26 Sep 2009 15:12:16 GMT]]></title><description><![CDATA[<p>Hallo. Ich habe folgendes Problem.</p>
<p>Wenn ich 2 floats miteinander Subtrahiere tritt folgendes auf.</p>
<p>variable a beinhaltet 50.7820<br />
variable b beinhaltet 50.7716</p>
<p>wenn ich jetzt a - b rechne kommt das hier raus: 0.0104027<br />
anstatt einfach 0.0104</p>
<p>Woran liegt das? Wie kann ich das verhindern?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1784618</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1784618</guid><dc:creator><![CDATA[Shuriken2643]]></dc:creator><pubDate>Sat, 26 Sep 2009 15:12:16 GMT</pubDate></item><item><title><![CDATA[Reply to Bei Subtraktion von float kommt es zu Fehlern on Sat, 26 Sep 2009 15:20:05 GMT]]></title><description><![CDATA[<p>Shuriken2643 schrieb:</p>
<blockquote>
<p>Woran liegt das?</p>
</blockquote>
<p>An der Ungenauigkeit, die das Rechnen mit Fliesskommatypen mit sich bringt. Viele Zahlen können durch die binäre Repräsentation nicht exakt dargestellt werden, deshalb kommt es zu Rundungsfehlern. Du kannst dir das so vorstellen, wie wenn du 1/3 im Dezimalsystem nicht vollständig aufschreiben kannst. Bei <code>double</code> oder <code>long double</code> kannst du zwar genauer rechnen, aber der Fehler tritt dann eben später auf.</p>
<p>Shuriken2643 schrieb:</p>
<blockquote>
<p>Wie kann ich das verhindern?</p>
</blockquote>
<p>Muss der Wert wirklich sehr exakt sein? Oft braucht man das nämlich gar nicht. Falls ja, entweder mit genaueren Typen arbeiten (zum Beispiel sich Nachkommastellen durch Ganzzahlen darstellen lassen und erst bei Bedarf konvertieren; oder eine Bruchklasse nutzen) oder je nach Anwendung eben Toleranzen einführen, die zum Beispiel bei Prüfung auf Gleichheit berücksichtigt werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1784620</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1784620</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 26 Sep 2009 15:20:05 GMT</pubDate></item><item><title><![CDATA[Reply to Bei Subtraktion von float kommt es zu Fehlern on Sat, 26 Sep 2009 15:40:13 GMT]]></title><description><![CDATA[<p>Okay. Danke. Ich benutz dann einfach Integer. In meinem Fall dürfte das aufs gleiche rauskommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1784632</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1784632</guid><dc:creator><![CDATA[Shuriken2643]]></dc:creator><pubDate>Sat, 26 Sep 2009 15:40:13 GMT</pubDate></item><item><title><![CDATA[Reply to Bei Subtraktion von float kommt es zu Fehlern on Sat, 26 Sep 2009 16:26:26 GMT]]></title><description><![CDATA[<p>Schlägt die Ungenauigkeit denn schon bei 4 Stellen nach dem Komma zu? Auf <a href="http://www.hs-augsburg.de/~sandman/c_von_a_bis_z/c_007_005.htm#RxxobKap0070050400263A1F01218C" rel="nofollow">http://www.hs-augsburg.de/~sandman/c_von_a_bis_z/c_007_005.htm#RxxobKap0070050400263A1F01218C</a> steht was von 6 Stellen bei float. Oder ist damit nur gemeint man kann eine Zahl mit maximal 6 Stellen genau darstellen aber für die Operationen gilt es nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1784645</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1784645</guid><dc:creator><![CDATA[Tobiking2]]></dc:creator><pubDate>Sat, 26 Sep 2009 16:26:26 GMT</pubDate></item><item><title><![CDATA[Reply to Bei Subtraktion von float kommt es zu Fehlern on Sat, 26 Sep 2009 16:32:01 GMT]]></title><description><![CDATA[<p>0.99999999999<br />
1.0</p>
<p>ist erst an der x. stelle ungenau aber so gar schon vorm komma zu sehen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1784651</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1784651</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Sat, 26 Sep 2009 16:32:01 GMT</pubDate></item><item><title><![CDATA[Reply to Bei Subtraktion von float kommt es zu Fehlern on Sun, 27 Sep 2009 15:59:35 GMT]]></title><description><![CDATA[<p>siehe<br />
<a href="http://de.wikipedia.org/wiki/Ausl%C3%B6schung_(numerische_Mathematik)" rel="nofollow">Auslöschung (numerische Mathematik)</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1784792</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1784792</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Sun, 27 Sep 2009 15:59:35 GMT</pubDate></item><item><title><![CDATA[Reply to Bei Subtraktion von float kommt es zu Fehlern on Sun, 27 Sep 2009 11:01:41 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>Keiner kann besser Nix als ich - Tagedieb mit Lächelm im Gesicht</p>
</blockquote>
<p>Tüte Deutsch gefällig?<br />
<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/1784850</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1784850</guid><dc:creator><![CDATA[rechtschreib0r]]></dc:creator><pubDate>Sun, 27 Sep 2009 11:01:41 GMT</pubDate></item><item><title><![CDATA[Reply to Bei Subtraktion von float kommt es zu Fehlern on Sun, 27 Sep 2009 13:52:29 GMT]]></title><description><![CDATA[<p>die art rechnung die du machst ist die, die man möglichst vermeiden sollte. fließkommazahlen sind nicht dafür gemacht, dass man sie voneinander abzieht. in der Multiplikation sind sie genauer. Wenn das ergebnis die Differenz zweier großer vom wert her sehr ähnlicher fließkommazahlen ist, dann ist der fehler sehr groß. Oft kann man das Problem dadurch beheben, dass man die gleichung umstellt, oder wie du den Datentyp ändert. wobei meißtens erstes vorzuziehen ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1784923</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1784923</guid><dc:creator><![CDATA[Krux]]></dc:creator><pubDate>Sun, 27 Sep 2009 13:52:29 GMT</pubDate></item><item><title><![CDATA[Reply to Bei Subtraktion von float kommt es zu Fehlern on Sun, 27 Sep 2009 15:11:23 GMT]]></title><description><![CDATA[<p>rechtschreib0r schrieb:</p>
<blockquote>
<p>unskilled schrieb:</p>
<blockquote>
<p>Keiner kann besser Nix als ich - Tagedieb mit Lächelm im Gesicht</p>
</blockquote>
<p>Tüte Deutsch gefällig?<br />
<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>
</blockquote>
<p>Jopp - war natürlich kein Tippfehler sondern ein, meiner Unwissenheit über die deutsche Sprache und deren Grammatik geschuldeter, Fehler...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1784984</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1784984</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Sun, 27 Sep 2009 15:11:23 GMT</pubDate></item><item><title><![CDATA[Reply to Bei Subtraktion von float kommt es zu Fehlern on Sun, 27 Sep 2009 15:26:54 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>Jopp - war natürlich kein Tippfehler sondern ein, meiner Unwissenheit über die deutsche Sprache und deren Grammatik geschuldeter, Fehler...</p>
</blockquote>
<p>Wie kann man sich bei n und m nur vertippen? <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="🙂"
    /><br />
(Hatten ja mal jemand, der gemeint hat, dass er sich bei w und m, oder so vertippt hat.. :p)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1784995</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1784995</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 27 Sep 2009 15:26:54 GMT</pubDate></item><item><title><![CDATA[Reply to Bei Subtraktion von float kommt es zu Fehlern on Sun, 27 Sep 2009 15:49:50 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>rechtschreib0r schrieb:</p>
<blockquote>
<p>unskilled schrieb:</p>
<blockquote>
<p>Keiner kann besser Nix als ich - Tagedieb mit Lächelm im Gesicht</p>
</blockquote>
<p>Tüte Deutsch gefällig?<br />
<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>
</blockquote>
<p>Jopp - war natürlich kein Tippfehler sondern ein, meiner Unwissenheit über die deutsche Sprache und deren Grammatik geschuldeter, Fehler...</p>
</blockquote>
<p>Du schuldest deiner Unwissenheit Fehler? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /><br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> Interessant.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785004</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785004</guid><dc:creator><![CDATA[rechtschreib0r]]></dc:creator><pubDate>Sun, 27 Sep 2009 15:49:50 GMT</pubDate></item><item><title><![CDATA[Reply to Bei Subtraktion von float kommt es zu Fehlern on Sun, 27 Sep 2009 15:50:53 GMT]]></title><description><![CDATA[<p>Gib ihr am besten gleich alle, dann kannst du keine mehr machen <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</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785005</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785005</guid><dc:creator><![CDATA[rechtschreib0r]]></dc:creator><pubDate>Sun, 27 Sep 2009 15:50:53 GMT</pubDate></item><item><title><![CDATA[Reply to Bei Subtraktion von float kommt es zu Fehlern on Sun, 27 Sep 2009 23:54:00 GMT]]></title><description><![CDATA[<p>Tobiking2 schrieb:</p>
<blockquote>
<p>Schlägt die Ungenauigkeit denn schon bei 4 Stellen nach dem Komma zu? Auf <a href="http://www.hs-augsburg.de/~sandman/c_von_a_bis_z/c_007_005.htm#RxxobKap0070050400263A1F01218C" rel="nofollow">http://www.hs-augsburg.de/~sandman/c_von_a_bis_z/c_007_005.htm#RxxobKap0070050400263A1F01218C</a> steht was von 6 Stellen bei float. Oder ist damit nur gemeint man kann eine Zahl mit maximal 6 Stellen genau darstellen aber für die Operationen gilt es nicht?</p>
</blockquote>
<p>Sind doch eh 7 Stellen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /><br />
2 vor dem Komma und 5 dahinter -&gt; in Summe: 7</p>
<p>Dass das Ergebnis der Subtraktion nichtmehr auf 6 bzw. 7 Stellen genau ist, sollte logisch sein.<br />
Das Ergebnis kann schliesslich nicht genauer sein als die Operanden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785165</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785165</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sun, 27 Sep 2009 23:54:00 GMT</pubDate></item><item><title><![CDATA[Reply to Bei Subtraktion von float kommt es zu Fehlern on Mon, 28 Sep 2009 01:30:45 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Sind doch eh 7 Stellen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /><br />
2 vor dem Komma und 5 dahinter -&gt; in Summe: 7</p>
<p>Dass das Ergebnis der Subtraktion nichtmehr auf 6 bzw. 7 Stellen genau ist, sollte logisch sein.<br />
Das Ergebnis kann schliesslich nicht genauer sein als die Operanden.</p>
</blockquote>
<p>Also ich zähle bei 50.7820 und 50.7716 nur 2 Stellen vor und 4 nach dem Komma, also insgesamt 6. Ich habe allerdings gerade mal die Zahlen einem float zugewiesen die Werte werden direkt verfälscht: 50,782001 und 50,771599. Damit ist klar das nicht das genaue Ergebnis rauskommt. Die Frage ist nun, ob die Werte immer stimmen wenn man nach 6 Stellen rundet, oder ob das mit den 6 Stellen einfach nur Unsinn ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785167</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785167</guid><dc:creator><![CDATA[Tobiking2]]></dc:creator><pubDate>Mon, 28 Sep 2009 01:30:45 GMT</pubDate></item><item><title><![CDATA[Reply to Bei Subtraktion von float kommt es zu Fehlern on Mon, 28 Sep 2009 09:35:25 GMT]]></title><description><![CDATA[<p>Shuriken2643 schrieb:</p>
<blockquote>
<p>variable a beinhaltet 50.7820<br />
variable b beinhaltet 50.7716</p>
<p>wenn ich jetzt a - b rechne kommt das hier raus: 0.0104027<br />
anstatt einfach 0.0104</p>
</blockquote>
<p>Der Fehler bei 0.0104027 ist in der 6. Kommastelle, d.h. wenn man auf die Ausgangswerte zurückschliesst, dann scheinen die 7 &quot;gute&quot; Stellen zu haben.</p>
<blockquote>
<p>Ich habe allerdings gerade mal die Zahlen einem float zugewiesen die Werte werden direkt verfälscht: 50,782001 und 50,771599.</p>
</blockquote>
<p>Hier haste auch 7 &quot;gute&quot; Stellen wenn ich mich nicht verzählt habe. Wobei allerdings nur 6 &quot;garantiert&quot; werden.</p>
<blockquote>
<p>Die Frage ist nun, ob die Werte immer stimmen wenn man nach 6 Stellen rundet, oder ob das mit den 6 Stellen einfach nur Unsinn ist.</p>
</blockquote>
<p>Nein, natürlich nicht, denn je mehr man rechnet, desto grösser wird der Fehler natürlich. Kommt natürlich auch drauf an wie die Berechnungen und deren Zwischenergebnisse aussehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785249</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785249</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 28 Sep 2009 09:35:25 GMT</pubDate></item></channel></rss>