0

简述我所经历的;我有一个浮点数形式的字符串要转换为 Double。对于Windows Phone 7 设备,它只能转换用“逗号”分隔的数字(例如46,211),对于Emulator 8,它只能转换用“点”(例如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 包含分数字符串,然后我将它们转换为双精度,如上所示。谢谢

4

1 回答 1

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"));    
于 2013-08-02T14:38:58.400 回答