float.TryParse忽略小数点

时间:2018-12-17 20:36:57

标签: c# .net-core

我在Windows上使用Visual Studio代码,并使用最新的asp.net核心创建了mvc应用。

当我运行这段代码时:

List<int> lstABC; // it has some data
var idx = lstABC.FindIndex(a => a.index == 1);
if (idx != -1)
    lstABC[idx].Number = 5;

我得到result = true,表示解析成功,但实际的convertNumber = 1389;

我尝试了不同的文化,不同的数字样式,但我一无所获。我会明白得到结果=假,但不是这样。而且我不知道如何解决。

为方便起见,用c#提琴:https://dotnetfiddle.net/0ZDwis

2 个答案:

答案 0 :(得分:5)

,被解释为千位分隔符,而不是小数点。例如,这将起作用:

string number = "13.89";

或者,也可以使用以逗号作为小数的文化,例如法语:

string number = "13,89";
float convertedNumber = -1f;
var culture = CultureInfo.GetCultureInfo("fr-FR");
bool result = float.TryParse(number, NumberStyles.Any, culture, out convertedNumber);

答案 1 :(得分:4)

如果您希望float.TryParse,视为小数点分隔符而不是千位分隔符,则应使用以逗号作为小数点分隔符的区域性,例如荷兰语:

bool result = float.TryParse(number, NumberStyles.Any, new CultureInfo("nl-nl"), out converted);