2014-01-26 136 views
2
string TestVarStrg = "3.1"; 
double TestVarDoub = Convert.ToDouble(TestVarStrg); 

MessageBox.Show(TestVarDoub.ToString()); 

使用此代码我在模拟器“31”的消息框内获得。在我的Lumia 920上也是如此。但在我的Lumia 1520上,我获得了“3.1”。 bouth设备有最新的Lumia黑色更新。无论如何,实际上我需要“3.1”一样。 “31”也可以,但在所有设备上请。有关这种行为的任何想法?或者将字符串转换为double的其他方法?String和Double非常奇怪的问题

+5

世界的一个重要部分拼写“小数点”为“逗号”。目前还不清楚为什么你的Lumia仍然认为它在瑞典。您必须使用CultureInfo.InvariantCulture来避免此类事故。 –

回答

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

请考虑,这仅适用于如果您的十进制符号始终是一个。