What's the proper way to convert from a scientific notation string such as "1.234567E-06" to a floating point variable using C#?
Asked
Active
Viewed 4.6k times
2 Answers
62
Double.Parse("1.234567E-06", System.Globalization.NumberStyles.Float);
-
19Will not work if the current culture's decimal separator is not `.`. So the always working approach is either using `NumberStyles.Any` or (better) force `InvariantCulture`: `Double.Parse("1.234567E-06", NumberStyles.Float, CultureInfo.InvariantCulture);` – Tim Schmelter Jun 10 '13 at 12:48
-
Note that if you tack a .ToString() on the end of this procedure call it will return the scientific notation and not a string of only digits. I needed to include a format string parameter ("0.0000") in the .ToString() call to make the float format correctly. – Eric Ness Jan 10 '14 at 17:34
13
Also consider using
Double.TryParse("1.234567E-06", System.Globalization.NumberStyles.Float, out MyFloat);
This will ensure that MyFloat
is set to value 0 if, for whatever reason, the conversion could not be performed. Or you could wrap the Double.Parse()
example in a Try..Catch
block and set MyFloat
to a value of your choosing when an exception is detected.

Jaymie Thomas
- 812
- 2
- 10
- 22
-
22You don't want to rely on MyFloat being 0 to indicate a failed conversion, you want to rely on the bool return value. – Carl Oct 21 '08 at 08:55