这个问题应该很简单,但我找不到让它工作的方法。我有以下代码:
string yeah = "0.5";
float yeahFloat = float.Parse(yeah);
MessageBox.Show(yeahFloat.ToString());
但MessageBox显示“5”而不是“0.5”。如何使用float解决此问题?
答案 0 :(得分:6)
float yeahFloat = float.Parse(yeah, CultureInfo.InvariantCulture);
答案 1 :(得分:3)
0.5
是某些国家/地区编写十进制数字的方式,就像在美国一样。在法国,十进制数字更多用逗号写成:0,5
通常,您提供的代码会在我的计算机上抛出异常。
您需要指定要从哪种文化中分析要解析的字符串。如果没有,它将采用您的计算机文化设置,这是不好的,因为您的代码可以在不同的国家/地区运行。
所以,通过指定一个不变的文化,你对Parse函数说:好吧,让我们尝试解析点或逗号,尽可能努力:
string yeah = "0.5";
float yeahFloat = float.Parse(yeah, CultureInfo.InvariantCulture);
Console.Write(yeahFloat);
关于这个问题已经有很多问题了:
答案 2 :(得分:1)
默认情况下,Single.Parse(String)
会根据您的本地化设置进行分析。如果您想使用特定的文件,则必须使用该方法的适当重载。
答案 3 :(得分:1)
您可以使用float.TryParse()尝试此操作:
string yeah = "0.5";
float yeahFloat;
if (float.TryParse(yeah,System.Globalization.NumberStyles.Any,
System.Globalization.CultureInfo.InvariantCulture,out yeahFloat))
{
MessageBox.Show(yeahFloat.ToString());
}
答案 4 :(得分:0)
尝试在ToString()方法中传递您需要的格式
MessageBox.Show(yeahFloat.ToString("0.0")); // 1 decimal place
答案 5 :(得分:-1)
String yeah = "0.5";
float yeahFloat = Convert.ToSingle(yeah);
MessageBox.Show(yeahFloat.ToString());