C# double.Parse引发System.FormatException

C# double.Parse引发System.FormatException,c#,formatexception,C#,Formatexception,我试图使用以下解析方法将某些字符串解析为双精度值: double.Parse("198.222213745118", CultureInfo.CurrentUICulture); CultureInfo.CurrentUICulture是fr-fr。 但这会引发FormatException类型的异常 原因是什么?法语(即fr)使用逗号表示小数部分的开头,而不是句点。它们使用句点分隔数千个字符。我建议使用Double.TryParse而不是.Parse,因为它使用起来更安全,并且确保在解析时不

我试图使用以下解析方法将某些字符串解析为双精度值:

double.Parse("198.222213745118", CultureInfo.CurrentUICulture);
CultureInfo.CurrentUICulture是fr-fr。 但这会引发FormatException类型的异常


原因是什么?

法语(即
fr
)使用逗号表示小数部分的开头,而不是句点。它们使用句点分隔数千个字符。

我建议使用Double.TryParse而不是.Parse,因为它使用起来更安全,并且确保在解析时不会出现任何异常

这里有一个代码供您使用

double answer = -1;
Double.TryParse("Value", out answer);

现在你所要做的就是做一个条件语句,检查它是否真的解析了字符串。

我知道这个问题很老了,但我的答案可能会帮助其他人。 这就是答案:

double.Parse("198.222213745118", System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.NumberFormatInfo.InvariantInfo);
而不是

double.Parse("198.222213745118", CultureInfo.CurrentUICulture);

198.222213745118
应该是
198222213745118
(,而不是。)?对,但我认为这是这个double.parse方法的工作使用
CultureInfo.InvariantCulture
不,它不能完全通用。e、 g.1234在英格兰是一千二百三十四,在法国是一点多一点。如果您可以控制您可能想使用的字符串,那么请确定,但是出于这个原因,我将我的区域性发送到了parse方法。@user2717436,该区域性需要与UI控件中的区域性一致。是的,精确,而千分之一部分只是书面语言,罗马尼亚文化也是如此
double.Parse
不代表
它会引发异常。那么我该怎么做呢?我的意思是-这个字符串是从xml文件中读取的,我得到的结果是这样的(带“,”分隔符)。如何将其解析为双重取决于我的区域性?XML文件应该使用特定的格式。指定一个区域性,其格式与XML文件中使用的格式一致。由于不明确,这是一个非常糟糕的主意。例如,1234有什么用?