Donnerstag, 3. April 2008

Invalid argument.

.NET bringt wirklich viele Annehmlichkeiten mit sich, die das Leben eines Programmierers drastisch erleichtern können. Aber manchmal fragt man sich schon was die .NET Entwickler sich dabei gedacht haben. Wie gerade heute wieder.

Ich hatte diese zwei unscheinbaren Zeilen im Code um damit eine XML-Struktur zu füllen.

   1:  double dblSource = 0.0000001;
   2:  string strDestination = dblSource.ToString();

Doch oh Schreck, wieso steht denn da '1E-06' im XML anstelle meines '0.0000001'?
Vor allem da dieser Wert mit dem XML einem Datenbanksystem übergeben wird und dieses mit einem schönen "Invalid argument." aussteigt.

OK, dann verwenden wir halt einen FormatString und ändern entsprechend die zweite Zeile.

   1:  string strDestination = dblSource.ToString("F20"); //20 um kleinere Zahlen abzudecken

Doch wie sieht den jetzt mein String aus? Jetzt habe ich '0.00000010000000000000'.
Naja, jetzt könnte man natürlich eine Schleife coden die einem den String so lange kürzt, bis hinten keine '0' mehr dran steht (Ähmm... ich kenne zufällig jemanden der das auch gleich mal umgesetzt hat ;) ), aber es gibt auch eine etwas elegantere Lösung (thx @ Tropensturm).

   1:  double dblSource = 0.0000001;
   2:  decimal decTemp = (decimal)dblSource;
   3:  string strDestination = decTemp.ToString();

Ergebnis ist ein String mit dem Wert '0.0000001'

Keine Kommentare: