Guten morgen an alle,
ich bin Blutiger Programmieranfänger und versuche mich gerade an Pyton Version 3.2.
Zu diesem Zweck habe ich mir das Buch Einstieg in Python zugelengt und bin auf folgendes Problem gestoßen:
Im Buch steht dieses Programm:
# 1. Version
for x in range (18,22):
print (x/10)
print ()
# 2. Version
x = 1.8
for i in range (4):
print (x)
x = x + 0.1
Als Ausgabe soll dann erscheinen:
1.8
1.9
2.0
2.1
1.8
1.9
2.0
2.1
Soweit ist das ja auch verständlich. Nur ist bei mir die Ausgabe:
1.8
1.9
2.0
2.1
1.8
1.9000000000000001
2.0
2.1
Wenn ich den rangewert erhöhe scheint sich dieser Fehler oder was auch immer mitzuziehen.
Könnte mir jemand versuch das zu erklären?
Danke im vorraus und einen schonen Feiertag noch
Pelle
Fehlberechnung bei for-Schleife mit range?
-
BlackJack
@Pelle: Wenn ein Buch diese beiden Varianten gegenüberstellt, dann sollte genau dazu auch die Erklärung drin stehen und warum man die zweite Variante nicht verwenden sollte. Gleitkommazahlen sind nicht genau und es können im Binärsystem nicht alle Brüche mit endlicher Genauigkeit dargestellt werden. Genau wie im Dezimalsystem. Dort ist es zum Beispiel 1⁄3 — und im Binärsystem ist es zum Beispiel 1⁄10.
Lesestoff dazu: http://floating-point-gui.de/
Lesestoff dazu: http://floating-point-gui.de/
