2010-06-17 14 views
5

Ich bin ein Problem mit dem folgenden Code aufweisen:String-Konvertierung zu schweben - Dezimalzeichen

string latString = "50.09445"; 
float lat = Convert.ToSingle(latString); 

Der zweite Befehl führt eine Format Ausnahme. Ich weiß, dass dieses Problem ist, dass kulturelle Einstellungen, die ich verwende (cs-CZ) Komma als Dezimaltrennzeichen verwenden und diese Zeichenfolge stattdessen Dezimaltrennzeichen enthält.

Gibt es eine einfache Möglichkeit, die Kultureinstellungen zu ignorieren und immer Dezimalpunkt für die Konvertierung zu verwenden? Oder sollte ich das Problem einfach vermeiden, indem ich die Zeichenfolge zuerst überprüfe und das Komma durch den Dezimalpunkt ersetze?

Antwort

19

Verwenden CultureInfo.InvariantCulture

float lat = Convert.ToSingle("50.09445", CultureInfo.InvariantCulture); 
2

Versuchen Sie, die Convert.ToSingle(string, IFormatProvider) overload statt und es die invariante Kultur passieren (oder was auch immer CultureInfo wollen Sie verwenden stattdessen werden):

float lat = Convert.ToSingle(latString, CultureInfo.InvariantCulture); 
2
string latString = "50.09445"; 
float lat = float.Parse(latString, CultureInfo.InvariantCulture); 
1
Single.Parse(latString, System.Globalization.CultureInfo.InvariantCulture);