从科学记数法字符串转换为C#中的float

odb*_*sta 28 c# floating-point scientific-notation

使用C#将科学记数法字符串(如"1.234567E-06")转换为浮点变量的正确方法是什么?

小智 54

Double.Parse("1.234567E-06", System.Globalization.NumberStyles.Float);
Run Code Online (Sandbox Code Playgroud)

  • 如果当前文化的小数分隔符不是`.`,则无效.因此,始终工作的方法是使用`NumberStyles.Any`或(更好)强制`InvariantCulture`:`Double.Parse("1.234567E-06",NumberStyles.Float,CultureInfo.InvariantCulture); (14认同)

Jay*_*mas 11

还考虑使用

Double.TryParse("1.234567E-06", System.Globalization.NumberStyles.Float, out MyFloat);
Run Code Online (Sandbox Code Playgroud)

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

  • 您不希望依赖于MyFloat为0来表示转换失败,您希望依赖于bool返回值. (18认同)