Das Problem einen Double in einen String umzuwandeln um ihn später (ggfs. nach Änderung) wieder zurück ein einen Double umzuwandeln ist nicht besonders groß.
Das gleiche Programm mit anderen Ländereinstellungen kann zu falschen Werten führen (aus 99,99 werden dann schnell 9999 Euro).
Abhilfe schafft hier "InvariantCulture".
Hier der zweite Teil : String 2 Double (mit oder ohne Default/Exceptions).
Aufrufbeispiel:
// String mit ,
double dblBetrag = ToDouble("123,45");
// String mit .
double dblBetrag = ToDouble("123.45");
// Fehler, Default 0 wird verwendet
double dblBetrag = ToDouble("rgjier", 0);
// Fehler, mit Try/Catch abgefangen
try
{
dblBetrag = ToDouble("rjeieg", true);
}
catch
{
dblBetrag = 0;
}
/// <summary>
/// Wandelt in String in Double um
/// </summary>
/// <param name="In"></param>
/// <returns></returns>
public static double ToDouble(string In)
{
In = In.Replace(",", ".");
return double.Parse(In, System.Globalization.CultureInfo.InvariantCulture);
}
/// <summary>
/// Wandelt String in Double um mit Default falls es nicht möglich ist
/// </summary>
/// <param name="In"></param>
/// <param name="Default"></param>
/// <returns></returns>
public static double ToDouble(string In, double Default)
{
double dblOut;
In = In.Replace(",", ".");
try
{
dblOut = double.Parse(In, System.Globalization.CultureInfo.InvariantCulture);
}
catch
{
dblOut = Default;
}
return dblOut;
}
/// <summary>
/// Wandelt einen String in Double um (Default = 0 oder es wird eine Exception ausgelöst)
/// </summary>
/// <param name="In">String</param>
/// <param name="UseExceptions">True (Exception wird ausgelöst) oder False (Default 0 wird verwendet)</param>
/// <returns></returns>
public static double ToDouble(string In, bool UseExceptions)
{
double dblOut;
In = In.Replace(",", ".");
try
{
dblOut = double.Parse(In, System.Globalization.CultureInfo.InvariantCulture);
}
catch (Exception ex)
{
if (UseExceptions)
throw ex;
else
dblOut = 0;
}
return dblOut;
}
1 Kommentare zum Snippet