5
votes

I'm having a problem with the following code:

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

The second command throws a FormatException exception. I know that problem is that culture settings I'm using (cs-CZ) use comma as decimal separator and this string contains decimal point instead.

Is there some easy way to "ignore" the culture settings and always use decimal point for the conversion? Or should I just avoid the problem by checking the string first and replace comma by the decimal point?

4

4 Answers

21
votes

Use CultureInfo.InvariantCulture

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

Try the Convert.ToSingle(string, IFormatProvider) overload instead, and pass it the invariant culture (or whatever CultureInfo you want to be using instead):

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