Forums Neueste Beiträge
 

Rundungsfehler

20/10/2007 - 20:52 von Rainer Berkhahn | Report spam
Hallo NG,
Ich habe folgendes Problem:

Ich arbeite derzeit an einem Programm, bei dem der Benutzer eine Zahl
mit zwei Nachkommastellen eingibt; ich erhalte also zum Beispiel so
einen String:
"1.59"
Daraus will ich dann den entsprechenden float haben.
Anstatt 1.59 liefert mir die float-Funktion jedoch 1.5900000000000001.
Bei eval kommt genau dasselbe raus. Und round(1.5900000000000001,2)
liefert mir komischerweise auch wieder 1.5900000000000001.

Hat irgendjemand eine Ahnung, woher dieses Problem kommt bzw. wie man es
lösen kann?

Danke schonmal im Voraus!

PS: Ich glaub nicht, dass ich der Erste bin, der dieses Problem hat. Ich
bitte also um Verstàndnis, falls dieses Problem in der NG schon
besprochen wurde.
 

Lesen sie die antworten

#1 Lutz Horn
20/10/2007 - 21:03 | Warnen spam
Hallo,

Rainer Berkhahn wrote:
"1.59"
Daraus will ich dann den entsprechenden float haben.
Anstatt 1.59 liefert mir die float-Funktion jedoch 1.5900000000000001.



Ein Problem scheint mir das nicht zu sein.

float("1.59")






1.5900000000000001
float("1.59") == 1.59






True

Solange hier Gleicheit gilt, ist das Ergebnis von float() OK.

Das Thema Gleitkommazahlen ist komplex:
<http://de.wikipedia.org/wiki/Gleitkommazahl>

Gruß
Lutz

Ähnliche fragen