Sprache: C#
Unsere universellen Winforms-Editoren bieten als Rückgabevalue oft nur ein object-Feld an. Will man das in eine Zahleneingabe wandeln, muss man null, Leerangaben etc. oft extra berücksichtigen. Diese Routine bügelt alle Problemfälle weg, funktioniert aber nur, wenn kein Tausendertrennzeichen verwendet werden soll. Dafür dann aber in praktisch allen Ländern.
Die Routine ist als Erweiterungsmethode vorbereitet.
public static double EditValueToDouble(this object value)
{
if (value == null) return 0;
string str = value.ToString();
if (str == "") return 0;
if (str == "-") return 0;
str = str.Replace(",", System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator);
str = str.Replace(".", System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator);
return System.Convert.ToDouble(str);
}
public static double EditValueToDouble(this object value)
{
if (value == null) return 0;
string str = value.ToString();
if (str == "") return 0;
if (str == "-") return 0;
str = str.Replace(",", System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator);
str = str.Replace(".", System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator);
return System.Convert.ToDouble(str);
}
Alte URL:
/snippet/robustes-auslesen-von-double-eingaben/3784
Nette Idee,
du solltest nur den Namen von ToFloat in ToDouble ändern, damit es keine Verwirrung stiftet.
Vielleicht wäre das ganze als Erweiterungsmethode besser einsetzbar!?
Stimmt, der erste Einwand ist ganz und gar berechtigt. Die Basis der Routine kommt noch von Delphi Zeiten 😉 Habe ich aber geändert und auch gleich die Vorbereitung als Extension Methode eingebaut.