关于c#:将字符串转换为float时缺少小数点

Missing decimal point when converting a string to a float

本问题已经有最佳答案,请猛点这里访问。

我用几行代码测试了一个非常基本的程序。

1
2
3
 float x = 1;
 x =  float.Parse("4.5");
 Console.WriteLine(x);

产量是45

由于某种原因,它漏掉了小数点。我的程序必须使用float,如何解决这个问题?


解析的工作方式取决于运行程序的系统的区域性。很可能语言已设置为显示语言,但未使用小数点作为分数分隔符。

如果要使用使用小数点的特定区域性(例如US),则必须在Parse方法的第二个参数中指定该区域性。

例如,要强制使用"en-us"文化:

1
2
CultureInfo culture = new CultureInfo("en-US");
double number = Double.Parse("4.5", culture);

您也可以使用不变的区域性,您可以使用CultureInfo.InvariantCulture。它松散地建立在美国文化的基础上,但并非完全如此(例如,货币是不同的)。有关详细信息,请参阅文档。