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]

VB.NET Komplett

Sie stehen vo der Aufgabe, individuelle Anwendungen für Windows zu schreiben. Hier ist VB.NET die optimale Sprache. Sie erlernt sich recht leicht und passt sich komplett in die .NET Umgebung von Microsoft ein. Nach der Schulung entwickeln Sie anwenderfreundliche Programme in VB.NET . Mit den objektorientierten Modellen in VB.NET erzeugen Sie außerdem wiederverwendbare Komponenten.

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

Nach dieser Schulung beherrschen Sie die Grundlagen des TFS. Sie erledigen administrative Aufgaben schnell und sicher.

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