C# 非常奇怪的字符串和双精度问题

C# 非常奇怪的字符串和双精度问题,c#,windows-phone-8,C#,Windows Phone 8,有了这段代码,我就进入了仿真器“31”的消息框。我的lumia 920也一样。但在我的lumia 1520上我得到了“3.1”。bouth设备有最后一次lumia black更新。无论如何,实际上我需要“3.1”作为双倍。“31”也可以,但请在所有设备上使用。你知道这种行为吗?或者另一种方法将字符串转换为双?< p>请考虑小数符号依赖于文化设置。在可以提供IFormatProvider的地方使用重载: 因此,您的代码如下所示: string TestVarStrg = "3.1"; doubl

有了这段代码,我就进入了仿真器“31”的消息框。我的lumia 920也一样。但在我的lumia 1520上我得到了“3.1”。bouth设备有最后一次lumia black更新。无论如何,实际上我需要“3.1”作为双倍。“31”也可以,但请在所有设备上使用。你知道这种行为吗?或者另一种方法将字符串转换为双?

< p>请考虑小数符号依赖于文化设置。在可以提供IFormatProvider的地方使用重载:

因此,您的代码如下所示:

string TestVarStrg = "3.1";
double TestVarDoub = Convert.ToDouble(TestVarStrg);

MessageBox.Show(TestVarDoub.ToString());

请考虑,如果你的小数符号始终是“。”,那么这个词只能起作用。

世界上的一个重要部分拼写“小数点”为“逗号”。不太清楚为什么你的Lumia仍然认为它在瑞典。您必须使用CultureInfo.InvariantCulture以避免此类事故。
string TestVarStrg = "3.1";
double TestVarDoub = Convert.ToDouble(TestVarStrg, System.Globalization.CultureInfo.InvariantCulture);

MessageBox.Show(TestVarDoub.ToString());