我试过如下:如何将“0.0000e + 000”解析成float/double?
string val = "0.0000e+000";
float.Parse(val);
...但得到了FormatException
。所以我想知道:如何将这样的值解析为float/double?
我试过如下:如何将“0.0000e + 000”解析成float/double?
string val = "0.0000e+000";
float.Parse(val);
...但得到了FormatException
。所以我想知道:如何将这样的值解析为float/double?
你有一个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
),它也会失败。它也可能会因为其他一些文化而失败。
我认为当前文化被设置为“ru-RU”,因为异常本身正在讨论格式错误(формат)。好点子! – 2013-03-23 16:05:52
@ChristianIvicevic这只是一个猜测,因为异常看起来像俄罗斯人。同样的问题发生在法国,可能还有其他一些语言。 – Virtlink 2013-03-23 16:06:42
Fyi:входнаястрокаимеланеверныйформат=给定的输入字符串格式错误。用C#学习俄语:D – 2013-03-23 16:10:53
代码'var x = Single.Parse(“0.0000e + 000”);'不会在新项目中抛出异常。你可以在上下文中发布更多的代码吗? – 2013-03-23 15:51:29
'var d = Convert.ToDouble(“0.0000e + 000”);'也可以 – 2013-03-23 15:53:15
检查您的值。正如@Cole所评论的,使用具有您提供的值的方法工作。导致异常的值是多少? – Oded 2013-03-23 15:55:22