String和Double非常奇怪的问题

use*_*511 2 c# windows-phone-8

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

MessageBox.Show(TestVarDoub.ToString());
Run Code Online (Sandbox Code Playgroud)

使用此代码,我进入模拟器"31"的消息框.同样在我的lumia 920上.但在我的lumia 1520上,我得到了"3.1".bouth设备有最后的lumia black更新.无论如何,实际上我需要"3.1"作为双倍."31"也可以,但请在所有设备上.关于这种行为的任何想法?或者另一种将字符串转换为double的方法?

Dir*_*ber 7

请注意,小数符号取决于文化设置.使用重载,您可以提供IFormatProvider:

http://msdn.microsoft.com/de-de/library/9s9ak971(v=vs.110).aspx

所以你的代码看起来像:

string TestVarStrg = "3.1";
double TestVarDoub = Convert.ToDouble(TestVarStrg, System.Globalization.CultureInfo.InvariantCulture);

MessageBox.Show(TestVarDoub.ToString());
Run Code Online (Sandbox Code Playgroud)

请注意,只有当您的小数符号始终为"."时,这才有效.