Fehlberechnung bei for-Schleife mit range?

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
Pelle
User
Beiträge: 2
Registriert: Montag 3. Oktober 2011, 08:58

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
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/
Pelle
User
Beiträge: 2
Registriert: Montag 3. Oktober 2011, 08:58

Da sag ich doch mal Danke für die schnelle Erklärung.
Leider wird im Buch diese Problematik nicht angesprochen.
Aber der Link ist schonmal super.

Pelle
Antworten