Die Eingabezeichenfolge hatte kein korrektes Format # 2

double temp; temp = (double)Convert.ToDouble("1234.5678"); 

Hey Ladys und Ladies, ich kann nicht für das Leben von mir herausfinden, warum die obige Zeile nicht funktioniert. Die obige Zeile gibt mir einen Laufzeiterrors, der sagt;

Eine nicht behandelte Ausnahme des Typs System.FormatException ist in mscorlib.dll aufgetreten

Zusätzliche Informationen: Die Eingabezeichenfolge hatte kein richtiges Format.

    Soweit ich weiß, verwenden die Convert Methoden das aktuelle Gebietsschema, um solche Konvertierungen durchzuführen. In diesem Fall würde Ihr aktuelles Gebietsschema ein Komma als Dezimalpunkt erwarten. Versuchen Sie, das aktuelle Gebietsschema für Ihre Anwendung oder die Konvertierung in eine Sprache / ein Land festzulegen, in dem Punkte verwendet werden (z. B. en_US). Die Methode sollte einen zweiten optionalen Parameter bereitstellen, um einen IFormatProvider als alternative Lösung bereitzustellen.

    Um String ohne Ausnahme in Double zu konvertieren :

    Eine nicht behandelte Ausnahme des Typs System.FormatException ist in mscorlib.dll aufgetreten

    Zusätzliche Informationen: Die Eingabezeichenfolge hatte kein richtiges Format.

    Machen Sie es kulturunabhängig, indem Sie den zweiten Parameterwert CultureInfo.InvariantCulture angeben , zum Beispiel:

     double.Parse("1234.5678", CultureInfo.InvariantCulture) 

    erste Lösung (wie in anderen Posts erwähnt):

     double temp = double.Parse("1234.5678", CultureInfo.InvariantCulture); 

    zweite Lösung – mache es standardmäßig zum aktuellen Thread:

     Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; double temp = double.Parse("1234.5678"); 

    dritte Lösung – machen Sie es standardmäßig zum Blockieren von Code:

     var prevCurrentCulture = Thread.CurrentThread.CurrentCulture; Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; ... double temp = double.Parse("1234.5678"); ... Thread.CurrentThread.CurrentCulture = prevCurrentCulture; 

    Sie können irgendwie einen europäischen lokalen verwenden. In einigen Ländern ist die. und in Zahlen ist umgekehrt.

    Hallo, wie Mario sagt, Sie müssen es unter Berücksichtigung der regionalen Einstellungen analysieren.

     double temp = double.Parse("1234.5678", System.Globalization.CultureInfo.CurrentCulture); 

    Grüße.

    Überprüfen Sie Ihre regionalen Einstellungen. Ihr Dezimalsymbol muss “.” Sein.

     double temp = double.Parse("1234,5678"); 

    Ich empfehle, stattdessen TryParse verwenden, sodass Sie die Analyse von Ausnahmen nicht behandeln müssen.

     double temp = 0; if (double.TryParse("123.456", out temp) { Console.WriteLine(string.Format("Parsed temp: {0}", temp); } else { Console.WriteLine("Input value was not able to be parsed."); } 

    Ich sehe kein Problem mit dem obigen Code.Es funktioniert gut und druckt den Wert 1234.5678 . Ich habe es in VS2008 versucht. Wahrscheinlich, etwas mit Gebietsschemaeinstellungen auf Ihrem Computer zu tun.