Seite 1 von 1
0-Stelle ungenau
Verfasst: Sonntag 29. November 2009, 13:08
von LP640
hallo
wieso steht bei folgendem code anstelle von 0 die zahl -1.38777878078e-016
Code: Alles auswählen
>>> x=-1
>>> while x<1:
print x
x=x+0.1
-1
-0.9
-0.8
-0.7
-0.6
-0.5
-0.4
-0.3
-0.2
-0.1
-1.38777878078e-016
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
ich hab es nicht geschafft dieses problem zu lösen
hat jemand ne idee???
mfg
LP640
Verfasst: Sonntag 29. November 2009, 13:15
von EyDu
Verfasst: Sonntag 29. November 2009, 13:28
von HerrHagen
Der entsprechende Teil der deutschen Übersetzung des Python-Tutorials:
http://tutorial.pocoo.org/floatingpoint.html
Um die Probleme zu vermeiden kann man mit
decimal arbeiten.
Verfasst: Sonntag 29. November 2009, 14:13
von sma
Verfasst: Sonntag 29. November 2009, 14:23
von gkuhl
Nicht die 0.0 ist ungenau, sondern die 0.1:
Code: Alles auswählen
In [10]: 0.0
Out[10]: 0.0
In [11]: 0.1
Out[11]: 0.10000000000000001
Grüße
Gerrit
Edit: Mit 0.25 funktioniert das z.B.:
Code: Alles auswählen
In [14]: while x < 1:
....: print x
....: x += 0.25
....:
....:
-1
-0.75
-0.5
-0.25
0.0
0.25
0.5
0.75
Verfasst: Sonntag 29. November 2009, 16:34
von LP640
vielen dank für eure hilfe
ich hab das problem irgendwie mit round gelöst
mfg
LP640
Verfasst: Sonntag 29. November 2009, 17:05
von EyDu
LP640 hat geschrieben:ich hab das problem irgendwie mit round gelöst
Das hört sich jetzt aber nicht sehr vertrauenswürdig an

Spiele besser nicht an den Zahlen herum und passe nur die Ausgabe entsprechen an. Das Stichwort lautet "String Formatting".
Verfasst: Sonntag 29. November 2009, 17:32
von Dav1d
Aud das [mod]Decimal[/mod]-Modul wurde schon einmal verwiesen
Verfasst: Sonntag 29. November 2009, 18:44
von gkuhl
Dav1d hat geschrieben:Aud das [mod]Decimal[/mod]-Modul wurde schon einmal verwiesen
Nicht zum
ersten Mal.

Verfasst: Sonntag 29. November 2009, 18:58
von Dav1d
gkuhl hat geschrieben:Dav1d hat geschrieben:Aud das [mod]Decimal[/mod]-Modul wurde schon einmal verwiesen
Nicht zum
ersten Mal.

Das hab ich eigentlich gemeint
