Forum: VB.NET |
Thema:
AW: AW: AW: AW: AW: Rundungsfehler in VB.NET |
Von:
Thomas Hauser (
26.08.2007 14:53) |
Hallo,
jetzt habe ich eine akzeptable Lösung. Das wäre dann toString Methode von double oder decimal.
Formatstring: "Fd", wobei d die Anzahl der Nachkommastellen ist.
Hier ein paar Tests, die alle das korrekte Ergebnis lieferten:
double d1 = 1.24;
double d2 = 1.25;
double d3 = 1.26;
double d4 = 1.274;
double d5 = 1.275;
double d6 = 1.276;
double d7 = 1.2774;
double d8 = 1.2775;
double d9 = 1.2776;
Console.Write(d1.ToString());
Console.Write(": ");
Console.WriteLine(d1.ToString("F1"));
Console.Write(d2.ToString());
Console.Write(": ");
Console.WriteLine(d2.ToString("F1"));
Console.Write(d3.ToString());
Console.Write(": ");
Console.WriteLine(d3.ToString("F1"));
Console.Write(d4.ToString());
Console.Write(": ");
Console.WriteLine(d4.ToString("F2"));
Console.Write(d5.ToString());
Console.Write(": ");
Console.WriteLine(d5.ToString("F2"));
Console.Write(d6.ToString());
Console.Write(": ");
Console.WriteLine(d6.ToString("F2"));
Console.Write(d7.ToString());
Console.Write(": ");
Console.WriteLine(d7.ToString("F3"));
Console.Write(d8.ToString());
Console.Write(": ");
Console.WriteLine(d8.ToString("F3"));
Console.Write(d9.ToString());
Console.Write(": ");
Console.WriteLine(d9.ToString("F3"));
decimal dec1 = 1.24m;
decimal dec2 = 1.25m;
decimal dec3 = 1.26m;
decimal dec4 = 1.274m;
decimal dec5 = 1.275m;
decimal dec6 = 1.276m;
decimal dec7 = 1.2774m;
decimal dec8 = 1.2775m;
decimal dec9 = 1.2776m;
Console.Write(dec1.ToString());
Console.Write(": ");
Console.WriteLine(dec1.ToString("F1"));
Console.Write(dec2.ToString());
Console.Write(": ");
Console.WriteLine(dec2.ToString("F1"));
Console.Write(dec3.ToString());
Console.Write(": ");
Console.WriteLine(dec3.ToString("F1"));
Console.Write(dec4.ToString());
Console.Write(": ");
Console.WriteLine(dec4.ToString("F2"));
Console.Write(dec5.ToString());
Console.Write(": ");
Console.WriteLine(dec5.ToString("F2"));
Console.Write(dec6.ToString());
Console.Write(": ");
Console.WriteLine(dec6.ToString("F2"));
Console.Write(dec7.ToString());
Console.Write(": ");
Console.WriteLine(dec7.ToString("F3"));
Console.Write(dec8.ToString());
Console.Write(": ");
Console.WriteLine(dec8.ToString("F3"));
Console.Write(dec9.ToString());
Console.Write(": ");
Console.WriteLine(dec9.ToString("F3"));
Wenn Du nur den string brauchst, bist Du jetzt schon am Ziel, ansonsten einfach so:
double d10 = 1000000.45;
Console.WriteLine(d10.ToString("F1"));
double d11 = double.Parse(d10.ToString("F1"));
Console.WriteLine(d11.ToString());
Ist nicht perfekt, aber korrekt. ;-)
Grüße,
Thomas
Thomas Hauser (Trainer und Consultant, Blog: http://thomashauser.spaces.live.com, Forum: http://www.sharepointbook.de - Die Forum-Webseite zum Buch!)
Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!