如何在C#中从String解析为Float?

时间:2013-04-17 13:40:51

标签: c# parsing

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

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

但MessageBox显示“5”而不是“0.5”。如何使用float解决此问题?

6 个答案:

答案 0 :(得分:6)

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

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

答案 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());