double Werte

23/06/2010 - 19:21 von Andreas Bauer | Report spam
Hallo,
wie rundet man in C# am besten.
Ich gebe ein
doube test = 9.7
Aufeinaml wird
9,699999988
Wie behandle ich double Werte für die Berechnung korrekt? Wie runde
ich korrekt?
Grüße Andreas
 

Lesen sie die antworten

#1 Frank Dzaebel
23/06/2010 - 19:45 | Warnen spam
Hallo Andreas,

wie rundet man in C# am besten.
[...] Wie behandle ich double Werte für die Berechnung
korrekt? Wie runde ich korrekt?



Also zunàchst ist es normal (by design), das solche Effekte auftreten.
Gleitkommazahlen basieren unter C# auf dem "IEEE 754" Standard.
Es gibt somit keine "korrekte" Rundung, sondern nur gewisse
Typen/Verfahren der Rundung.

[IEEE 754 - Wikipedia]
http://de.wikipedia.org/wiki/IEEE_754

[Floating-Point Types Table (C# Reference)]
http://msdn.microsoft.com/de-de/lib...et949.aspx

Es kàme nun (zum einen) darauf an, auf wieviel Stellen Du runden
möchtest. Zum Beispiel auf 4, dann zum Beispiel:

double test = 9.7;
double tt = test + .1; //9.7999..
double t2 = Math.Round(tt, 4); //9.8

Schau Dir die verschiedenen Überladungen der Methode auch an:

[Math.Round-Methode (System)]
http://msdn.microsoft.com/de-de/lib...round.aspx

diese stellt auch verschiedene Verfahren der Rundung zur Verfügung.

Es kommt weiterhin auf die Art der Berechnung an.
Beispielsweise ist der Decimal-Werttyp
für Finanzberechnungen geeignet, bei denen
zahlreiche signifikante Vor- und Nachkommastellen
erforderlich sind und keine Rundungsfehler auftreten
dürfen:

[Decimal-Struktur (System)]
http://msdn.microsoft.com/de-de/lib...cimal.aspx


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen