如何在c#中解析字符串到浮点数

本文关键字:字符串 浮点数 | 更新日期: 2023-09-27 18:09:52

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

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

但是MessageBox显示"5"而不是"0.5"。我如何解决这个使用浮动?

如何在c#中解析字符串到浮点数

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);

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

    解析字符串为浮点数c#
  • 解析浮点数的最佳方式?
  • c#解析浮点数
  • 等。

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

您可以使用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());    
   }

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

MessageBox.Show(yeahFloat.ToString("0.0")); // 1 decimal place