Convert from scientific notation string to float in C#
Asked Answered
U

2

33

What's the proper way to convert from a scientific notation string such as "1.234567E-06" to a floating point variable using C#?

Unprofessional answered 15/9, 2008 at 16:52 Comment(0)
C
63
Double.Parse("1.234567E-06", System.Globalization.NumberStyles.Float);
Cryptology answered 15/9, 2008 at 16:55 Comment(2)
Will 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);Toxemia
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.Myceto
M
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.

Meda answered 21/10, 2008 at 8:49 Comment(1)
You don't want to rely on MyFloat being 0 to indicate a failed conversion, you want to rely on the bool return value.Strega

© 2022 - 2024 — McMap. All rights reserved.