2013-03-23 258 views
0

我试过如下:如何将“0.0000e + 000”解析成float/double?

string val = "0.0000e+000"; 
float.Parse(val); 

...但得到了FormatException。所以我想知道:如何将这样的值解析为float/double?

Parsing into a float

Parsing into a double

+2

代码'var x = Single.Parse(“0.0000e + 000”);'不会在新项目中抛出异常。你可以在上下文中发布更多的代码吗? – 2013-03-23 15:51:29

+1

'var d = Convert.ToDouble(“0.0000e + 000”);'也可以 – 2013-03-23 15:53:15

+0

检查您的值。正如@Cole所评论的,使用具有您提供的值的方法工作。导致异常的值是多少? – Oded 2013-03-23 15:55:22

回答

4

你有一个CultureInfo.CurrentCulture(当前区域性)该小数点是不同的。尝试用不变的文化,而不是对它进行分析:

var x = Single.Parse("0.0000e+000", CultureInfo.InvariantCulture); 

为了说明问题:如果你是俄罗斯的,你目前的文化将被设置为ru-RU。然后将下面的失败

CultureInfo.DefaultThreadCurrentCulture = CultureInfo.GetCultureInfo("ru-RU"); 
var x = Single.Parse("0.0000e+000"); 

出现FormatException:输入字符串的不正确的格式。

如果你是法国人(fr-FR),它也会失败。它也可能会因为其他一些文化而失败。

+0

我认为当前文化被设置为“ru-RU”,因为异常本身正在讨论格式错误(формат)。好点子! – 2013-03-23 16:05:52

+0

@ChristianIvicevic这只是一个猜测,因为异常看起来像俄罗斯人。同样的问题发生在法国,可能还有其他一些语言。 – Virtlink 2013-03-23 16:06:42

+0

Fyi:входнаястрокаимеланеверныйформат=给定的输入字符串格式错误。用C#学习俄语:D – 2013-03-23 16:10:53