2014-07-01 261 views
0

我试图将字符串“8.7”​​转换为数字,但是我所有的尝试将它转换为87而不是8.7。这是我的尝试。C#将字符串转换为数字

string wind_kph = "8.7" 
if (Convert.ToDouble(wind_kph) > 60.00f) 

真正

if ((int)Convert.ToDouble(wind_kph) > 60.00f) 

真正

if (Convert.ToDecimal(wind_kph) > 60.00f) 

真正

+3

您是否有任何可能干扰解析的本地化设置?我相信小数点在某些文化中是逗号。你的代码看起来像*应该*工作。 – BradleyDotNET

+0

你的当地文化是什么?许多欧洲文化把“8.7”​​称为“87”,将“8.7”​​称为“8.7”​​;我怀疑你可以通过明确指定一种文化(可能是不变的文化)来解决这个问题。 –

+0

第一行应该是“;”终止。它如何编译w /语法错误? Rgds, –

回答

4

可以使用InvariantCulture针对使用dot作为小数点分隔

解析

您可以找到double.Parse(string)方法的文档更详细的信息,相关部分是:

小号参数使用是当前线程初始化的NumberFormatInfo对象格式化信息解读文化。有关更多信息,请参见CurrentInfo。要使用其他文化的格式信息解析字符串,请调用Double.Parse(String, IFormatProvider)Double.Parse(String, NumberStyles, IFormatProvider)方法。

+0

谢谢,这是问题所在。我的语言选择只是承认一个,而不是一个。 – Aman

3

这可能是一种文化问题。如果没有明确指定解析函数使用当前线程文化。要指定特定的文化,您可以将第二个参数发送到double.Parse函数。以你的情况为“。”你可以使用InvariantCulture

double.Parse("8.7", CultureInfo.InvariantCulture);