Windows Phone和Emulator之间的不一致

时间:2013-08-02 14:24:54

标签: c# string windows-phone-7 emulation converter

简要告诉我的经历;我有一个浮动数字形式的字符串转换为Double。对于Windows Phone 7设备,它只能转换用"逗号" (例如46,211),对于模拟器8,它只能转换为" dot" (例如46.211)。如果你做对比,其中一个会崩溃。

为什么会发生这么简单的蠢事?有人注意到了吗?

void getconditions(string evaulate)
{
    int i = 0;
    string[] evaluatearray = evaulate.Split(new Char[] { ':' });

    foreach (string s in evaluatearray)
    {
        conditions[i] = Convert.ToDouble(s);
        i++;
        if (i == conditions.Length) break;
    }
}

所以在这段代码中,s包含分数字符串,然后我将它们转换为double,如上所示。 感谢

1 个答案:

答案 0 :(得分:1)

这是因为您试图在不指定文化的情况下解析数字。在这些情况下,将使用默认文化。简单来说,模拟器的语言与手机的语言不同。

根据经验,如果不指定文化,就不应该调用.Parse方法。使用.ToString方法将数字或日期转换为字符串时适用相同的规则。

double number;

// Use the invariant culture when the culture is irrelevant
// (typically, when you are parsing numbers generated by an application of your own)
number = double.Parse("46.211", CultureInfo.InvariantCulture);

// Use a specific culture in all the other cases:
number = double.Parse("46,211", CultureInfo.GetCultureInfo("en-GB"));
number = double.Parse("46.211", CultureInfo.GetCultureInfo("en-US"));