c # Convert.ToDoppelformat Ausnahmefehler

7

Ich versuche, diese Zeichenfolge in double

zu konvertieren

Convert.ToDouble("1.12");

und dies ist die Ausgabe

  

System.FormatException wurde nicht behandelt.

Sollte ich so etwas tun?

%Vor%

Oder gibt es eine einfachere Lösung?

    
sczdavos 23.07.2011, 12:41
quelle

4 Antworten

23

double.Parse verwendet standardmäßig die aktuelle Kultur. Es klingt, als wolltest du die invariante Kultur:

%Vor%

EDIT: Nur um klar zu sein, sollten Sie dies natürlich nicht verwenden, wenn Sie versuchen, Text, der von einem Benutzer in einer anderen Kultur eingegeben wurde, zu analysieren. Dies ist nützlich, wenn Sie Daten in invarianter Kultur erhalten haben (wie die meisten maschinenbasierten Datenformate) und diese beim Parsen erzwingen wollen.

    
Jon Skeet 23.07.2011, 12:49
quelle
3

Sie müssen . nicht in , ersetzen. Es ist jedoch besser, die Methode .net TryParse wie:

zu verwenden %Vor%

Bearbeiten: Beachten Sie auch, dass Sie beim Ersetzen von . durch , falsche Ergebnisse erhalten, z. B. 1.12 :

%Vor%     
Jalal Said 23.07.2011 12:45
quelle
2

Convert.ToDouble verwendet Double.Parse intern. Wenn Sie den Kulturkontext nicht kennen, sollten Sie eine Überladung von Double.Parse verwenden, um die Kultur zu präzisieren:

%Vor%     
Falanwe 23.07.2011 12:49
quelle
0

Beachten Sie, dass dieses Problem davon abhängen kann, woher die Eingabezeichenfolge stammt. Wenn es von einer Datenbank als Objekt gelesen wird, können Sie das Problem lösen, indem Sie es als Objekt beibehalten und Convert.ToDouble () wie folgt verwenden:

%Vor%     
Gary Huckabone 12.08.2014 15:48
quelle

Tags und Links