Warum ist dies laut dem Google Taschenrechner korrekt?
Guten Tag liebe Gutefrage.net Community,
Ich war heute in Tinkercad und rechnete dort aus wie weit ich ein Objekt verschieben muss, damit es so ist, wie ich will. Hier jetzt den Teil der mich wundert, ich hatte 89,76 - 90 gerechnet und raus kam -0,24, macht Sinn, danach wollte ich dieses Ergebnis mit etwas anderem verrechnen und fing eine neue Rechnung an und auf einmal wurde die -0,24 oben bei "Ans" zu -0,239999999999999488, dies würde ja heißen das -0,24=-0,239999999999999488 was heißen würde das unsere Mathematik falsch ist. Wenn ich dies auf meinem normalen Taschenrechner (Ein Casio fx-85DE Plus) ausrechne passiert dies übrigens nicht.
Also hat jemand eine Idee warum dieser Fehler bei Google auftritt aber bei meinem Taschenrechner nicht
2 Antworten
"Richtige" Taschenrechner benutzen normalerweise die BCD-Darstellung ("binary coded decimal") zur internen Darstellung von Zahlen. Da wird jede Dezimalstelle getrennt gespeichert (als 4-Bit-Binärzahl), und der Rechner rechnet wie ein Mensch mit den einzelnen Dezimalstellen.
Deshalb tritt das Problem bei deinem Casio nicht auf.
Der Google-Rechner benutzt offenbar nicht BCD, sondern wandelt die gesamten Zahlen ins Binärsystem um - und das Ergebnis der Rechnung wieder zurück ins Dezimalsystem. Dabei können Rundungsfehler auftreten.
Das ist eine Frage der internen Zahlendarstellung und der Rundung dieser Zahlen bei der Darstellung.
Praktisch alle Rechner (es gibt da Ausnahmen) rechnen im Dualsystem.
Demzufolge lassen sich unsere üblichen Dezimalzahlen nicht exakt darstellen, sondern nur mit einer Ungenauigkeit von +/- 1 Bit bei der letzten Stelle des Dualsystems.
Für alle weiteren Rechnungen ist diese minimale Abweichung absolut vernachlässigbsar.
Es gibt durchaus unterschiedliche Rechengenauigkeiten.
So unterscheidet man zwischen Real*4, Real*8, Double, Extended etc. bei den meisten Standard-Prozessoren.
Großrechner, aber auch spezielle Rechenlaufwerke für PCs haben auch Register mit deutlich höherer Genauigkeit.
Und es gibt auch spezielle Programmiersprachen, die tatsächlich die digitalen Rechenoperationden (auf der Basis 10) mit nahezu beliebiger, beim Programmieren vorgebbarer Genauigkeit durchführen können. Aber dann dauert jede einzelne Rechenoperation natürlich dein Vielfaches der Zeit, die die Rechenoperation mit dualen Zahlen erfordert.
Mit dem Kommandozeilen-Rechenprogramm "GNU bc" kannst du Berechnungen mit beliebig hoher Genauigkeit durchführen.
Danke für die schnelle Antwort, das ist ja mal extrem interessant und etwas über das ich noch nicht nach gedacht hatte was ein "Problem" von einem elektrischen Taschenrechner sein könnte. Ich weiß das so geringe Abweichungen eigentlich keinen Unterschied in Rechnungen machen, jedoch würde mich trotzdem einfach aus reiner Neugierde interessieren ob es noch andere technische Systeme gibt, die eine höhere Genauigkeit besitzen