simple Float-Berechnung Python?

3 Antworten

Computer speichern Zahlen in einem binären Format, das nicht immer in der Lage ist, eine exakte Darstellung einer Dezimalzahl zu liefern. Dies führt zu sehr kleinen Rundungsfehlern bei der Berechnung mit Fließkommazahlen. Der Unterschied ist extrem klein (0.000000000000023), was auf einen Rundungsfehler hinweist.

from decimal import Decimal

kelvinzahl = Decimal('273.15')
eingabe = Decimal(input())
ergebnis = eingabe - kelvinzahl
print(float(ergebnis))

In diesem Code wird 

Decimal

 anstelle von 

float

verwendet, um die Zahlen zu repräsentieren, was zu genauerem Rechnungen führt. Beachte, dass dies in den meisten Fällen wahrscheinlich nicht notwendig ist, da die kleinen Ungenauigkeiten bei der Arbeit mit 

float

 in der Regel vernachlässigbar sind. 

Woher ich das weiß:eigene Erfahrung

Das haben Fließkommarechenoperationen im Computer so an sich - sie sind nicht präzise. Daher rundet/schneidet man die Ausgabe auch auf eine sinnvolle Anzahl Nachkommastellen.

Ganz normal.

Ein Computer mit Binärdarstellung kann Zahlen mit Nachkommastellen nur bei besonderen Werten (..,5 / ..,25 / ..,75 / ...) exakt speichern.

Deine Ausgabe versucht, mehr Dezimalstellen zu berechnen, als an Information im float vorhanden ist.

Das ist unabhängig von der Programmiersprache.

float und double (Java, C++) nutze ich daher sogut wie nie.


Nakor 
Fragesteller
 17.11.2023, 13:44

Was nutzt du denn dann, um Gleitkommazahlen darzustellen oder zu verarbeiten ?

0
gogogo  17.11.2023, 13:56
@Nakor

Rechnen kann man damit, muss sich aber bewusst sein, dass da Ungenauigkeiten entstehen.

Beliebter Stoff fürs erste Semester: Fehlerfortpflanzung, Auslöschung von Information.

3012.5375 - 3012.3426 ist ein Beispiel für letzteres.

1