这个问题应该很简单,但我找不到让它工作的方法。我有以下代码:
string yeah = "0.5";
float yeahFloat = float.Parse(yeah);
MessageBox.Show(yeahFloat.ToString());
但是 MessageBox 显示“5”而不是“0.5”。如何使用浮点数解决这个问题?
float yeahFloat = float.Parse(yeah, CultureInfo.InvariantCulture);
请参阅文档:http: //msdn.microsoft.com/en-us/library/bh4863by.aspx
0.5
是某些国家/地区书写十进制数的方式,例如在美国。在法国,十进制数更多地用逗号书写:0,5
。
通常,您提供的代码会在我的计算机上引发异常。
您需要指定要从哪种文化中解析字符串。如果没有,这将需要您的计算机文化设置,这很糟糕,因为您的代码可以在不同的国家/地区运行。
所以,通过指定一个不变的文化,你对 Parse 函数说:好的,让我们尝试解析点或逗号,尽你所能:
string yeah = "0.5";
float yeahFloat = float.Parse(yeah, CultureInfo.InvariantCulture);
Console.Write(yeahFloat);
关于这个主题已经有很多问题:
你可以用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());
}
默认情况下,Single.Parse(String)
根据您的本地化设置进行解析。如果要使用特定的方法,则必须使用该方法的适当重载和所需的文化设置。
尝试在 ToString() 方法中传递您需要的格式
MessageBox.Show(yeahFloat.ToString("0.0")); // 1 decimal place