PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kommazahlen, Rundungsfehler bei FLOAT, warum wenn es glatt aufgeht.



Gutschy
13-01-2014, 07:04
Hallo Leute,

als Nichtinformatiker finde ich es seltsam das 3 * 1,1 bei einem Dezimal Typ 3,3 rauskommt, aber wenn die Zahlen als FLAOT gespeichert sind, die gleiche Rechnung 3.3000000715255737 oder ähnliches ergibt.

Mir ist klar das FLOAT begrenzt ist und das ist auch gut so und das es darum zu Rundungsfehlern kommen muss. Aber wieso kommt es bei so einer glatten Rechnung zu zu dieser Art Fehler?

Gruss Gutschy

sommerfee
13-01-2014, 08:18
0,1 und damit auch 1,1 sind binär keine "glatten Zahlen" (0,1 dezimal = 0,0001100110011... binär) , und damit ist 3 * 1,1 auch keine "glatte Rechnung" für den Prozessor.


Durch die unterschiedliche binäre Darstellung der Zahlen kann es in beiden Systemen zu Artefakten kommen. Das heißt: (rationale) Zahlen, die im Dezimalsystem „rund“ erscheinen, zum Beispiel \textstyle \frac{249}{20} = 12{,}45, können im Binärsystem nicht exakt dargestellt werden (der Wert ist 1100{,}01\overline{1100}_2). Stattdessen wird ihre Binärdarstellung im Rahmen der jeweiligen Rechengenauigkeit gerundet, so dass man bei der Rückumwandlung ins Dezimalsystem z. B. den Wert 12,44999999900468785 erhält. Dieses kann in nachfolgenden Berechnungen zu unvorhergesehenen Ab- oder Aufrundungsfehlern führen.
Quelle: http://de.wikipedia.org/wiki/Gleitkommazahl

Gutschy
13-01-2014, 09:06
Ach so.:)

Danke für die Info Sommerfee.

sebi11
25-01-2014, 13:40
hatte das gleiche Problem. Guter Tipp Sommerfee

Vitoet
11-07-2015, 07:59
wenn das Problem ausschließlich bei Temperatur auftritt, würd ich zuerst mal die Sensorik überprüfen.. Mechanik kannst im Grunde ausschließen.