Benutzer mit den meisten Antworten
Anzeige von Fließkommazahlen mit dem 'double'-Datentyp und Methode zur Rundung von Zahlen

Frage
-
Guten Tag,
ich bin neu in diesem Forum. Ich entwickle mit Visual C# und nutze Visual Studio 2008 Professionell Edition.
Ich habe zwei Fragen:
1.:
Wie kann ich bei dem Datentyp 'double' eine Fließkommazahl wie z. B. 2,53 E -7 als gewöhnliche Dezimalzahl 0,000000253 darstellen?2.:
Gibt es eine Methode in Visual C#, mit der ich eine Zahl nach der kaufmännischen allgemeinen Rundungsregel runden kann?
Zum Beispiel 10,5342 auf 10,53?Vielen Dank!
Antworten
-
Hallo R.,
hier ein paar C# Möglichkeiten und Antworten zu Deinen Fragen:
string s1, s2, s3; //(1) Wie kann ich bei dem Datentyp 'double' eine Fließkommazahl //wie z. B. 2,53 E -7 als gewöhnliche Dezimalzahl 0,000000253 darstellen? double db = 2.53E-7; s1 = db.ToString(); //ergibt: "2,53E-07" s2 = db.ToString("N9"); //ergibt: "0,000000253" s3 = ((decimal)db).ToString(); //ergibt: "0,000000253" //(2) Gibt es eine Methode in Visual C#, mit der ich eine Zahl // nach der kaufmännischen allgemeinen Rundungsregel runden kann? // Zum Beispiel 10,5342 auf 10,53? double d2 = 10.5342; double dNeu = Math.Round(d2, 2); // 10.53 double d3 = Math.Round(10.5249, 2); // 10.52 double d4 = Math.Round(10.525, 2); // 10.52 var d5 = Math.Round(10.525, 2, MidpointRounding.AwayFromZero); //10.53 Debugger.Break(); // Zahlen im Debugger anschauen ...
[Rundung – Wikipedia] -> "Kaufmännisches Runden":
http://de.wikipedia.org/wiki/Rundung#Kaufm.C3.A4nnisches_Runden[Decimal.Round-Methode (Decimal, Int32, MidpointRounding) (System)]
http://msdn.microsoft.com/de-de/library/9s0xa85y.aspx
(gemäß IEEE 754 / Abschnitt 4)- Als Antwort vorgeschlagen Robert BreitenhoferModerator Montag, 11. April 2011 16:40
- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 21. April 2011 14:45
Alle Antworten
-
Für die Rundung auf zwei Nachkommastellen versuche Math.Round(10.5342, 2), http://msdn.microsoft.com/de-de/library/75ks3aby.aspx. Prüfe aber selber, ob das Resultat dem entspricht, was du als "kaufmännisches" Runden verstehst, die Doku nennt es "Rundung auf den nächsten Wert bzw. unverzerrte Rundung (Banker's Rounding)".
MVP Data Platform Development My blog -
Hallo R.,
hier ein paar C# Möglichkeiten und Antworten zu Deinen Fragen:
string s1, s2, s3; //(1) Wie kann ich bei dem Datentyp 'double' eine Fließkommazahl //wie z. B. 2,53 E -7 als gewöhnliche Dezimalzahl 0,000000253 darstellen? double db = 2.53E-7; s1 = db.ToString(); //ergibt: "2,53E-07" s2 = db.ToString("N9"); //ergibt: "0,000000253" s3 = ((decimal)db).ToString(); //ergibt: "0,000000253" //(2) Gibt es eine Methode in Visual C#, mit der ich eine Zahl // nach der kaufmännischen allgemeinen Rundungsregel runden kann? // Zum Beispiel 10,5342 auf 10,53? double d2 = 10.5342; double dNeu = Math.Round(d2, 2); // 10.53 double d3 = Math.Round(10.5249, 2); // 10.52 double d4 = Math.Round(10.525, 2); // 10.52 var d5 = Math.Round(10.525, 2, MidpointRounding.AwayFromZero); //10.53 Debugger.Break(); // Zahlen im Debugger anschauen ...
[Rundung – Wikipedia] -> "Kaufmännisches Runden":
http://de.wikipedia.org/wiki/Rundung#Kaufm.C3.A4nnisches_Runden[Decimal.Round-Methode (Decimal, Int32, MidpointRounding) (System)]
http://msdn.microsoft.com/de-de/library/9s0xa85y.aspx
(gemäß IEEE 754 / Abschnitt 4)- Als Antwort vorgeschlagen Robert BreitenhoferModerator Montag, 11. April 2011 16:40
- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 21. April 2011 14:45