[C#] Float, Double und Decimal - Wie viele Nachkommastellen nun wirklich?

Cyperfriend

Der ohne Avatar
Registriert
14 Juli 2013
Beiträge
1.123
Ich versuche gerade heraus zu finden, wie viele Nachkommastellen Float, Double und Decimal liefern können. finde ich eine ungefähre Antwort. So ganz genau scheint das aber nicht klar. Weis jemand wie viele es wirklich sind, bzw. warum steht da bei double 15-16 Stellen und bei decimal 28-29 Stellen.
 
  • Thread Starter Thread Starter
  • #4
Danke, aber das war ja nicht die Frage. Die Frage war ja, wie viele Nachkommastellen nun tatsächlich angezeigt / berechnet werden
[Edit] Und warum ist die Zahl der Nachkommastellen nicht genau definiert)[/Edit]
Aber wenn wir schon dabei sind lasse ich mich gerne darüber aufklären, wann welcher dieser drei Datentypen angebracht ist. Nach Möglichkeit mit praktischem Beispiel.

Nach meinem Verständnis kann bei mathematischen Berechnungen die Genauigkeit nicht hoch genug sein (decimal). Wenn ich dagegen nur einen Durchschnittswert in einer Statistik erhalten will reicht wohl die einfache Form (float). Fragt sich wozu dann double gut sein soll.
 
float und double sind die so genannten Binären Gleitkomma Typen die auch die CPU kann -> schneller

Decimal funktioniert leicht anders und bietet bei verhältnismäßig kleinerem Zahlenbereich eine größere Genauigkeit

der C# Decimal typ ist ein 128 Bit typ

Und du wirst denke ich keine allgemeinverständlich, allgemeingültige und einfache Erklärung über die Anzahl der dargestellten stellen dieser Typen finden
 


Die Zahl der Nachkommastellen ist nicht eindeutig definiert, weil die Zahlen signed oder unsigned sein können - also entweder nur positiv, dann sind es 16 und 29 Stellen, oder positiv und negativ, dann sind es 15 und 28 Stellen.

Das Vorzeichen frisst die Delta-Stelle :)

J.
 
Aber wenn wir schon dabei sind lasse ich mich gerne darüber aufklären, wann welcher dieser drei Datentypen angebracht ist. Nach Möglichkeit mit praktischem Beispiel.

Nach meinem Verständnis kann bei mathematischen Berechnungen die Genauigkeit nicht hoch genug sein (decimal). Wenn ich dagegen nur einen Durchschnittswert in einer Statistik erhalten will reicht wohl die einfache Form (float). Fragt sich wozu dann double gut sein soll.
Genau, das kommt darauf an woher die Daten kommen die du verarbeitest und wo die hingehen. Reichen dir ungefähre Werte nimmst du float, brauchst du mehr Genauigkeit nimmst du double und wenn du es genau brauchst nimmst du einen Datentyp der exakte Berechnungen durchführt.
Bei java gibt es für letzteres z.B. BigDecimal das rationale Zahlen intern ganzzahlig speichert und verarbeitet und so exakte Werte berechnet.
"Bei mathematischen Berechnungen" ist zu allgemein um eine Aussage treffen zu können. Oft ist entweder der Input oder Algo eh Fehlerbehaftet oder du benötigst das berechnete Ergebnis nur in einer gewissen Genauigkeit. Wenn du z.B. ein 3D Modell rotierst bringt dir eine immer grössere Genauigkeit evtl gar nichts wenn es nur darum geht es am Bildschirm darzustellen, da ein Bildschirm nicht beliebig kleine Unterschiede darstellen kann. Wenn du aber eine Gerade rotierst und dich interessiert ob sie irgendwann eine andere Gerade schneidet - nicht visuell auf dem Bildschirm sondern tatsächlich - brauchst du in diesem Sinne exakte Werte .
 
Zuletzt bearbeitet:
Zurück
Oben