在C#中将科学计数法字符串转换为浮点数

33

如何使用C#将科学计数法字符串(例如“1.234567E-06”)正确转换为浮点变量?

2个回答

62
Double.Parse("1.234567E-06", System.Globalization.NumberStyles.Float);

19
如果当前文化的小数分隔符不是 .,则无法工作。因此始终有效的方法是使用 NumberStyles.Any 或(更好的方法)强制使用 InvariantCulture: Double.Parse("1.234567E-06", NumberStyles.Float, CultureInfo.InvariantCulture); - Tim Schmelter
请注意,如果在此过程调用末尾添加.ToString(),它将返回科学计数法而不是仅包含数字的字符串。我需要在.ToString()调用中包括一个格式字符串参数(“0.0000”),以使浮点数正确格式化。 - Eric Ness

13

同时考虑使用

Double.TryParse("1.234567E-06", System.Globalization.NumberStyles.Float, out MyFloat);

如果由于某种原因无法进行转换,这将确保MyFloat的值为0。或者您可以在Try..Catch块中包装Double.Parse()示例,并在检测到异常时将MyFloat设置为您选择的值。


22
不要仅仅依赖于MyFloat为0来指示转换失败,而应该依赖于布尔型的返回值。 - Carl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接