我在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
答案 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);