Seite 1 von 1

float Result richtig darstellen

Verfasst: Mittwoch 22. September 2021, 23:09
von shaft
Hallo alle miteinander,

ich habe vor ein paar Wochen mit Python angefangen und stehe da vor einem kleinen Problem.
Wenn ich folgendes code:

>>> a = 0.00001234
>>> b = 0.00004321
>>> c = a + b
>>> print(c)
5.555e-05

Warum bekomme ich als Ergebnis eine notierte Darstellung nicht 0.00005555
Wie kann ich mir das Ergebnis als Zahl anzeigen lassen so wie ich das kenne?
Ich möchte kein "str" daraus machen weil ich noch damit rechnen möchte
Danke im Voraus
Liebe Grüße

Re: float Result richtig darstellen

Verfasst: Donnerstag 23. September 2021, 07:13
von Sirius3
@shaft: zur Darstellung mußt Du immer einen String daraus machen. `print` macht das automatisch für Dich, wenn Du etwas anderes möchtest, dann mußt Du explizit eine Formatangabe machen. Sei Dir aber bewußt, dass Kommazahlen immer gerundete Zahlen sind und es deshalb überraschende Ergebnisse geben könnte:

Code: Alles auswählen

a = 0.00001234
b = 0.00004321
c = a + b
print(f"{c:.8f}")
Willst Du das um jeden Preis vermeiden, mußt Du mit Decimal rechnen:

Code: Alles auswählen

from decimal import Decimal
a = Decimal('0.00001234')
b = Decimal('0.00004321')
c = a + b
print(c)
Das ist aber im Normalfall nicht der richtige Weg, sondern setze Dich mit Floatingpoint auseinander und lerne damit umzugehen, auch wenn es für Dich zunächst seltsam aussieht.

Re: float Result richtig darstellen

Verfasst: Donnerstag 23. September 2021, 08:33
von sparrow
@shaft: Das überraschende Ergebnis wird übrigens dann sichtbar, wenn du dir mehr Nachkommastellen anzeigen lässt:

Code: Alles auswählen

>>> a = 0.00001234
>>> b = 0.00004321
>>> c = a + b
>>> print(f"{c:.8f}")
0.00005555
>>> print(f"{c:.10f}")
0.0000555500
>>> print(f"{c:.100f}")
0.0000555500000000000017743619074028771365192369557917118072509765625000000000000000000000000000000000

Re: float Result richtig darstellen

Verfasst: Donnerstag 23. September 2021, 13:07
von DeaD_EyE
Lernt man in der Mathematik-Vorlesung: https://www.youtube.com/watch?v=dgrDTblPhwc