C# C-float.parse忽略点

C# C-float.parse忽略点,c#,string,parsing,mvvm,C#,String,Parsing,Mvvm,我有一个文本框,它绑定到一个字符串变量。输入为5.5 我需要字符串变量来计算一些东西,但我注意到float.parsestringvariable忽略了点,使其成为55 有办法解决这个问题吗 谢谢这是由于您默认的区域性信息。接受小数点,小数点为。那么我们可以这样做: float f = float.Parse("float value as string", CultureInfo.InvariantCulture); 但是,如果您希望使用,则可以指定,然后可以指定一个区域

我有一个文本框,它绑定到一个字符串变量。输入为5.5 我需要字符串变量来计算一些东西,但我注意到float.parsestringvariable忽略了点,使其成为55

有办法解决这个问题吗


谢谢

这是由于您默认的区域性信息。接受小数点,小数点为。那么我们可以这样做:

float f = float.Parse("float value as string", CultureInfo.InvariantCulture);
但是,如果您希望使用,则可以指定,然后可以指定一个区域性,该区域性如下所示:

float f = float.Parse("float value as string", new CultureInfo("fr-FR").NumberFormat);

显然,可以是任何文化,不必使用法语

如Tom Dee所述,此问题与System.Globalization.CultureInfo设置有关

您可以通过以下设置修改当前线程的此设置:

当前文化 当代文化 i、 e


添加到所需的CultureInfo对象,并对前面突出显示的解析方法使用正确的重载。

您能给出一个详细的说明吗?您的区域设置是什么?请尝试输入5,5。查看一些使用逗号或其他句点的小数分隔符的非详尽列表。您的应用正在一台计算机上运行,该计算机的区域性设置为这些国家/地区之一。请使用并传递正确的区域性。这是否回答了您的问题?我很确定逗号被认为是不变区域性的千位分隔符。是的,这是非常正确的,我更新了答案
 Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("it-IT");