Convert.ToDouble 抛出 System.FormatException 出于某种未知原因

本文关键字:于某种 未知 FormatException ToDouble 抛出 System Convert | 更新日期: 2023-09-27 18:18:22

我正在解析一个 xml 文件,我正在尝试将一个值从 xml 文件中读取到双精度变量中。

这是我的代码的样子:

double someDouble = Convert.ToDouble(someString);

这里的问题是,当执行这行代码时,我得到

类型为"系统格式异常"的未处理异常发生在 姆科利布.dll

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

调试时,我看到someString的值在"局部变量"视图中为"45.00000000"。

据我所知,Convert.ToDouble 支持将字符串转换为双精度。

注意:只是为了确保我也尝试过

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

Convert.ToDouble 抛出 System.FormatException 出于某种未知原因

它对我来说很好用。

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

只要要转换的字符串实际上是一个数字,您编写的代码就应该有效。 也许字符串中的某处有一个您看不到的非数字。 这是我唯一能想到的。

这不会解决您的特定问题,但我建议使用Double.TryParse而不是Convert.ToDouble。 您在很大程度上消除了使用 Double.TryParse 引发异常的可能性

我会尝试调用 Trim 但没有参数""。 请尝试一下,让我知道结果。

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