Convert.ToDouble抛出System.FormatException一些未知的原因

问题描述:

我解析一个XML文件,我想分配一个值,我从XML文件读取到一个双变量。Convert.ToDouble抛出System.FormatException一些未知的原因

这里是我的代码看起来像什么:

double someDouble = Convert.ToDouble(someString); 

问题就在这里,在执行这行代码时,我得到

型“System.FormatException”未处理的异常发生在 mscorlib.dll中

其他信息:输入字符串的不正确的格式。

当我调试时,我看到someString的值在“本地”视图中是“45.00000000”。

据我所知Convert.ToDouble支持这种将字符串转换为双。

注意:只是要确定我也试过

double someDouble = Convert.ToDouble(someString.Trim('"')); 
+3

将当前文化设置为'en-US',上面的代码运行得很好。这里还有其他事情要做。 FWIW,例外情况是**从来没有**抛出“无故”。 – Yuck 2011-12-19 15:06:37

+1

你能发表你正在使用的确切代码吗?没有理由45.000000应该是你的问题。摆脱您帖子中的所有内容,发布您的代码以及您拥有的单数问题。参考链接:http://msdn.microsoft.com/en-us/library/zh1hkw6k.aspx – 2011-12-19 15:07:38

+0

你如何将Xml元素的值赋给字符串someString? – 2011-12-19 15:09:34

它工作正常的我。

我的心理调试技巧告诉我,你在使用,作为小数点分隔文化运行。
通过CultureInfo.InvariantCulture

+0

对我来说,这是令人惊讶的,但这真的工作。在MSDN上,它隐含地表示Convert.ToDouble接受dot(。)作为十进制分隔符,但它没有提及(既不隐式也不明确)您需要使用CultureInfo。InvariantCulture的 – 2011-12-19 15:20:44

我会尝试调用修剪,但没有参数'“,请尝试,让我知道结果。

+0

的问题是文化(CultureInfo.InvariantCulture为第2参数Convert.ToDouble) – 2011-12-19 15:17:21

double someDouble = Convert.ToDouble("45.00000000"); //returns 45.0 
+0

哎呀我彪起飞mydub ..对不起..我会编辑 – MethodMan 2011-12-19 16:09:46

你写的应该工作,只要该字符串被转换的代码实际上是一个是也许在字符串中有一个非数字,你没有看到这是我能想到的唯一的东西

这不会解决你的问题,但我会建议Double.TryParse改为Convert.ToDouble。你很大程度上消除了使用Double.TryParse抛出异常的可能性