Seite 1 von 1

Fließkomma - Arithmetik

Verfasst: Dienstag 13. März 2018, 15:50
von Heon
Hallo,

ich bin irgendwie zu doof. ich habe mir auch schon Artikel dazu durchgelesen aber ich blicks irgendwie nicht:

Code: Alles auswählen

from decimal import *
getcontext().prec = 14
a =  20.117066497255
b = 163.41362791121173
c = Decimal(a) / Decimal(b)

d = Decimal(b)*Decimal(c)
print (d)
da kommt bei mir immer raus:
20.117066497256
warum ?
weil ich mehr Stellen zulasse ?
ich verstehs nicht

Heon

Re: Fließkomma - Arithmetik

Verfasst: Dienstag 13. März 2018, 16:38
von Sirius3
@Heon: Deine Zahl c wird auf 14 Nachkommasellen gerundet. Wenn Du die Zahl dann wieder mit einer 3-Stelligen Zahl multiplizierst, kannst Du ungefähr 11 Nachkommastellen Genauigkeit erwarten.

Re: Fließkomma - Arithmetik

Verfasst: Dienstag 13. März 2018, 16:49
von DeaD_EyE
Kommt bei mir auch raus.

Erst dachte ich es würde daran liegen, dass du die Zahlen als Float übergibst, die dann ja auch schon nicht alle ins Dezimalsystem passen.

Code: Alles auswählen

from decimal import *
getcontext().prec = 140
a =  '20.117066497255'
b = '163.41362791121173'
c = Decimal(a) / Decimal(b)

d = Decimal(b)*Decimal(c)
print (d)
Ich hab die Präzision mal auf 140 gestellt. Raus kommt dieses Ergebnis:
20.117066497254999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999

Also rundet er. Wie gerundet wird, kannst du auch einstellen.