DevTrain Startseite Advanced Developers Conference vom 14.-15. Februar 2011  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren



 

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!

 Betreff:
 Nachricht: Den Beitrag finden Sie nun unter: http://beta.devtrain.de/foren Die Benutzerdaten und Foreninhalte von beta.devtrain.de und www.devtrain.de sind die selben.
Sie können sich dort sogar per RSS über neue Inhalte informieren lassen.
Bei Problemen bitte direkt Mail an asp [AT] ppedv.de.

 Signatur:

  



Login
Username:


Passwort:






Passwort vergessen?

Building und Connecting Know-how

© Copyright 2003 ppedv AG