Windows Phone 区域问题

3

我有一个文本文件需要在应用程序中进行解析,这已经在我的英国设备和美国设备上测试过。这个相同的文本文件被安卓和iPhone应用程序使用,并且运行良好。有人向我报告说,在Windows手机上,这个功能无法正常工作!

事实证明,如果设备设置为像德国这样使用逗号“,”作为小数点的地区,则以下代码不起作用!

GeoCoordinate tempCoord = new GeoCoordinate();
tempCoord.Latitude = Convert.ToDouble(words[0]);
tempCoord.Longitude = Convert.ToDouble(words[1]);

由于单词以字符串形式出现,我不确定如何将其从字符串转换为double类型?

编辑: 在稍微相关的注释中,以下内容也使我苦恼!

geoWatcher.Position.Location.Latitude.ToString()

这将返回56,888(欧洲格式)和56.888(美国/英国格式)!
哎呀!

德国、英国和美国的样本地理坐标看起来有何不同? - Aaronontheweb
1个回答

1

不要使用 Convert.ToDouble,而是使用 double.parse(...)

double d = double.Parse("3.500,02", CultureInfo.GetCultureInfo("de-DE").NumberFormat); 

还有一个 double.ToString() 的重载版本,可以使用格式化程序,以任何希望的方式生成 double 的字符串表示形式。


啊,好的。如果我不知道格式是什么怎么办?你知道我该如何处理.ToString()吗? - Lee Armstrong
CultureInfo.CurrentCulture。然而,通常情况下您不需要使用它,因为Convert.ToDoubledouble.ToString默认会使用当前的文化信息。 - MusiGenesis
啊是的,我总是想使用/强制使用英国。 - Lee Armstrong
使用“en-GB”而不是“de-DE”。 - MusiGenesis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接