Laden...

Float / Double / Decimal

Erstellt von Crussy vor 3 Jahren Letzter Beitrag vor 3 Jahren 282 Views
Hinweis von gfoidl vor 3 Jahren

Abgeteilt von Unterschied Prefix & Postfix

C
Crussy Themenstarter:in
3 Beiträge seit 2021
vor 3 Jahren

Ahh okay, jetzt habe ich es verstanden. Danke!!
Vielleicht noch eine kleine Frage zu den Variablen..

Float / Double / Decimal
Sind ja alle für Zahlen mit Kommerstelle

Dabei ist float am ungenauesten und decimal am genauesten, da float weniger bit hat, als decimal(?).
Ich habe auch gelesen man benutzt so gut wie nur double, außer man hat wenig speicher dann halt float oder es muss sehr genau sein, wie Berechnungen mit Geld.. dann benutzt man mal Decimal.

Aber was genau heißt denn, dass das eine genauer ist, als das andere?
Passieren dort schon ab hunderstel fehler oder wie kann ich mir das mit dem un- und genauen Variablen vorstellen?

6.911 Beiträge seit 2009
vor 3 Jahren

Hallo Crussy,

float und double sind Gleitkommazahlen, die nach IEEE 754 gespeichert werden.
float wird mit 32-bit gespeichert, während double mit 64-bit gespeichert wird, daher auch das "double" für "doppelte Genauigkeit". Da geht es v.a. darum wie die Zahlen und Ergebnisse gerundet werden. Somit können bei float 7-8 Dezimalstellen ohne Genauigkeitsverlust gespeichert werden, bei double sind es schon 15-16.

Der [FAQ] Double und Float: Fehler beim Vergleich und Rundungsfehler geht auf ein paar Eigenheiten dieser Gleitkommazahlen ein.

Wie erwähnt wird bei Operationen mit Gleitkommazahlen das "wahre Ergebnis" gerundet und somit ergeben sich zwangsläufig Rundungsfehler. Für viele Algorithmen spielen diese keine wesentliche Rolle, z.B. in der Thermodynamik ist es egal ob die Temperatur 273,1500001 K od. 273,1500002 K ist. Einen weiteren Ausflug in die Stabilität (Numerik) erspare ich dir hier 😉

Stell dir nun aber vor es geht um Bank-Geschäfte und bei jeder Transaktion würde ein Rundungsfehler passieren. Nach unzähligen solcher Transaktionen und einer bestimmten Zeit könnten die Rundungsfehler so groß werden, dass die Bilanzen nicht mehr stimmen und das spielt eine wesentliche Rolle. Daher ist sind die o.g. Gleitkommazahlen ungeeignet und deshalb wurde der Datentyp decimal erfunden. Dieser besitzt keine Rundungsfehler und ist somit für Finanz-Mathematik die geieignete Wahl. Allerdings ist das Rechnen mit decimal aufgrund der Genauigkeitsanforderungen und des Wert-Bereichs nicht so performant wie mit den Gleitkomma-Typen double / float und tw. auch nicht anwendbar (da der Wert-Bereich über-/unterschritten wird).

Zusammengefasst:
Finanzmathematik -> decimal
Sonst -> double, außer Anforderungen an die Genauigkeit sind nicht sehr hoch dass float.

Was jedoch "nicht sehr hoch" bedeutet ist von Aufgabe zu Aufgabe verschieden, aber siehe oben bei den Dezimalstellen.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

C
Crussy Themenstarter:in
3 Beiträge seit 2021
vor 3 Jahren

Alles klar, vielen Dank für die Hilfe!
Falls mir in den nächsten Wochen noch weitere Fragen auftreten, was bestimmt der Fall sein wird, werde ich mich hier nochmal im Forum melden.

Vielen Dank & Dir ein schönes Wochenende ! 🙂
Crussy