simples for-Schleifen Problem

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
osys
User
Beiträge: 9
Registriert: Dienstag 4. August 2015, 18:14

Hey Leute,

wie kommt die 1.9000001 zustande? Ich verstehe es einfach nicht. Kann mir das mal jemand kurz erklären?

Code:

Code: Alles auswählen

x=1.8
for i in range (4):
    print(x)
    x = x + 0.1
Ausgabe:

Code: Alles auswählen

1.8
1.9000000000000001
2.0
2.1
Benutzeravatar
pillmuncher
User
Beiträge: 1484
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

In specifications, Murphy's Law supersedes Ohm's.
osys
User
Beiträge: 9
Registriert: Dienstag 4. August 2015, 18:14

Danke Dir

Code: Alles auswählen

import decimal
a = decimal.Decimal("0.1")
b = decimal.Decimal("0.2")
c = a + b
print(c)
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@osys: man sollte sich bewußt sein, dass floating-point-Rechnungen nur eine gewisse Genauigkeit haben, die im Normalfall aber ausreicht, so dass man nicht auf Module wie Decimal zurückgreifen muß. Entscheidend ist, dass man bei der Ausgabe weiß, wie viele Stellen eigentlich relevant sind. Wird 1.9000001 auf ein, zwei, ... Nachkommastellen gerundet, ist das Ergebnis so, wie Du es wünschst.
Antworten