Guten Tag,
bin ein Neuling, der gerade seine ersten Schritte durch den Programmierdschungel macht.
Bei einer Aufgabe komme ich jedoch leider nicht weiter.
print(5 + 10**40 - 10**40)
Ergebnis: 5
print(5.0 + 10**40 - 10**40)
Ergebnis: 0.0
Meine Erwartung: 5.0
Kann mir jemand bitte in 1-2 Sätzen erklären, wieso die Gleitkommazahl den Unterschied macht?
Besten Dank!
Datentyp für Rechenoperation
Die Reihenfolge macht dabei auch noch einen Unterschied.
Im ersten Fall ergibt sich nach 5.0 + 10**40 eine Zahl, die von der internen Darstellung her identisch ist mit 10**40. Dann ziehst du den gleichen Wert ab und landest bei 0.0. Im zweiten Fall landest du nach 10**40 - 10**40 bei 0.0 und wenn du dazu dann die 5.0 addierst, dann lässt sich das noch hinreichend problemlos darstellen.
Das betrifft übrigens nicht nur Python sondern eigentlich alle Programmiersprachen. Lesetipp: Is floating point math broken?
Code: Alles auswählen
>>> print(5.0 + 10**40 - 10**40)
0.0
>>> print(10**40 - 10**40 + 5.0)
5.0
Das betrifft übrigens nicht nur Python sondern eigentlich alle Programmiersprachen. Lesetipp: Is floating point math broken?