0

这个问题应该很简单,但我找不到让它工作的方法。我有以下代码:

string yeah = "0.5";
float yeahFloat = float.Parse(yeah);
MessageBox.Show(yeahFloat.ToString());

但是 MessageBox 显示“5”而不是“0.5”。如何使用浮点数解决这个问题?

4

5 回答 5

6
float yeahFloat = float.Parse(yeah, CultureInfo.InvariantCulture);

请参阅文档:http: //msdn.microsoft.com/en-us/library/bh4863by.aspx

于 2013-04-17T13:43:07.787 回答
3

0.5是某些国家/地区书写十进制数的方式,例如在美国。在法国,十进制数更多地用逗号书写:0,5
通常,您提供的代码会在我的计算机上引发异常。

您需要指定要从哪种文化中解析字符串。如果没有,这将需要您的计算机文化设置,这很糟糕,因为您的代码可以在不同的国家/地区运行。

所以,通过指定一个不变的文化,你对 Parse 函数说:好的,让我们尝试解析点或逗号,尽你所能:

string yeah = "0.5";
float yeahFloat = float.Parse(yeah, CultureInfo.InvariantCulture);
Console.Write(yeahFloat);

关于这个主题已经有很多问题:

于 2013-04-17T13:44:08.940 回答
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());    
   }
于 2013-04-17T13:45:52.480 回答
1

默认情况下,Single.Parse(String)根据您的本地化设置进行解析。如果要使用特定的方法,则必须使用该方法的适当重载和所需的文化设置。

于 2013-04-17T13:43:12.737 回答
0

尝试在 ToString() 方法中传递您需要的格式

MessageBox.Show(yeahFloat.ToString("0.0")); // 1 decimal place
于 2013-04-17T13:45:54.780 回答