Einzelnen Beitrag anzeigen

Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#3

AW: Fließkommatypen, wie wird aus 0.999999765 wieder 1?

  Alt 30. Okt 2010, 12:24
Ich möchte eine Fließkommazahl mit TIniFile.WriteFloat abspeichern und egal welchen Typ ich nehme (extended, single, double, real) wird, wenn ich eine 1 speichere, ein wilder Wert der Form 0,99999999987542 abgelegt.
Beim Laden und anschließenden Test auf 1 schlägt es natürlich fehl. Da 0,99999999987542 nunmal nicht 1 ist.
Wo liegt mein Denkfehler hier?
Vielen Dank schonmal und Happy Halloween!
Fehler 1: Du benutzt Gleitkommazahlen obwohl es dir anscheinend auf Akkuratheit ankommt (engl. accuracy, deu. "absolute Genauigkeit")
Fehler 2: Du vergleichst auf Gleichheit. Das sollte man mit Gleitkommazahlen nie machen.

Du kannst entweder Festkommazahlen hernehmen (wie z.B. Currency) oder du vergleichst mit einer Toleranz von +- 10^-6 oder sowas.
  Mit Zitat antworten Zitat