如何在c#中解析字符串到浮点数
本文关键字:字符串 浮点数 | 更新日期: 2023-09-27 18:09:52
这个问题应该很简单,但我找不到使它工作的方法。我有以下代码:
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);
关于这个话题已经有很多问题了:
- 解析字符串为浮点数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