c# - String 和 Double 的非常奇怪的问题

标签 c# windows-phone-8

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

MessageBox.Show(TestVarDoub.ToString());

使用此代码,我进入了模拟器“31”的消息框中。在我的 lumia 920 上也是如此。但在我的 lumia 1520 上我得到“3.1”。这两种设备都有最新的 lumia black 更新。无论如何,实际上我需要“3.1”作为两倍。 “31”也可以,但请在所有设备上使用。对这种行为有什么想法吗?或者其他将字符串转换为 double 的方法?

最佳答案

请注意小数点取决于文化设置。在可以提供 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());

请注意,这仅在您的小数点符号始终为“.”时才有效。

关于c# - String 和 Double 的非常奇怪的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21367581/

相关文章:

c# - 如何将位图转换为图像<Bgr, Byte>

android - 编写 NFC 标签,使其适用于 Android 和 Windows Phone8

javascript - 无法在 IE10 中创建 IndexedDB 数据库

c# - 捕获超时异常

windows-phone - 在 Windows Phone 8 应用程序中启用 JavaScript

c# - 处理泛型时编译器的无用期望?

c# - 使用 Json 错误请求的 WCF 服务

c# - 不同表同同

c# - 如何在没有 ILMerge 的情况下将程序集嵌入到控制台应用程序中?

javascript - PhoneGap App 对象函数不执行