Feedback

C# - String in Double umwandeln (mit InvariantCulture)

Veröffentlicht von am 26.04.2008
(1 Bewertungen)
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;
}
GFU-Schulungen  [Anzeige]

C# 2019/2017/2015 Aufbau

In dieser Schulung lernen Sie fortgeschrittene Techniken im Bereich .Net C#. Dabei stehen neben den eigentlichen Techniken auch architektonische Aspekte im Mittelpunkt.

Visual Studio Team Foundation Server 2017/2015 (TFS) für Projektmitglieder - Kompakt

Nach Teilnahme an dieser Schulung sind Ihnen die Grundlagen von ALM geläufig. Sie planen und steuern Projekte effizient mit dem Visual Studio Team Foundation Server.

/// <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

Firendeath schrieb am 02.06.2010:
Würde die erste Funktion nicht auch mit...
Convert.ToDouble(string);

... funktionieren ?
 

Logge dich ein, um hier zu kommentieren!