Seite 1 von 1

simples for-Schleifen Problem

Verfasst: Mittwoch 22. März 2017, 02:11
von osys
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

Re: simples for-Schleifen Problem

Verfasst: Mittwoch 22. März 2017, 06:44
von pillmuncher

Re: simples for-Schleifen Problem

Verfasst: Mittwoch 22. März 2017, 07:06
von osys
Danke Dir

Code: Alles auswählen

import decimal
a = decimal.Decimal("0.1")
b = decimal.Decimal("0.2")
c = a + b
print(c)

Re: simples for-Schleifen Problem

Verfasst: Mittwoch 22. März 2017, 08:11
von Sirius3
@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.