0-Stelle ungenau

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
LP640
User
Beiträge: 142
Registriert: Dienstag 29. September 2009, 14:40

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
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Das Leben ist wie ein Tennisball.
Benutzeravatar
HerrHagen
User
Beiträge: 430
Registriert: Freitag 6. Juni 2008, 19:07

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.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Code: Alles auswählen

x = -10
while x < 10:
    print x / 10.0
    x += 1
Stefan
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

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
Benutzeravatar
LP640
User
Beiträge: 142
Registriert: Dienstag 29. September 2009, 14:40

vielen dank für eure hilfe
ich hab das problem irgendwie mit round gelöst

mfg
LP640
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

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".
Das Leben ist wie ein Tennisball.
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

HerrHagen hat geschrieben: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.
Aud das [mod]Decimal[/mod]-Modul wurde schon einmal verwiesen
the more they change the more they stay the same
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

Dav1d hat geschrieben:Aud das [mod]Decimal[/mod]-Modul wurde schon einmal verwiesen
Nicht zum ersten Mal. :roll:
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

gkuhl hat geschrieben:
Dav1d hat geschrieben:Aud das [mod]Decimal[/mod]-Modul wurde schon einmal verwiesen
Nicht zum ersten Mal. :roll:
Das hab ich eigentlich gemeint :D
the more they change the more they stay the same
Antworten