简要告诉我的经历;我有一个浮动数字形式的字符串转换为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,如上所示。 感谢
答案 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"));