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有什么用?