C# 如何将经纬度字符串转换为双精度字符串?

C# 如何将经纬度字符串转换为双精度字符串?,c#,winforms,google-maps,C#,Winforms,Google Maps,我正在从谷歌获取我的经度和纬度: http://maps.google.com/maps/geo?q=Sliedrecht,%20荷兰&output=csv&oe=utf8&sensor=false 我想使用以下结果向地图添加标记: if (coordinates.Length == 4 && coordinates[0] == "200") { var overlay = new GMapOverlay(mapexplr,

我正在从谷歌获取我的经度和纬度:

http://maps.google.com/maps/geo?q=Sliedrecht,%20荷兰&output=csv&oe=utf8&sensor=false

我想使用以下结果向地图添加标记:

        if (coordinates.Length == 4 && coordinates[0] == "200")
        {
            var overlay = new GMapOverlay(mapexplr, "overlayTwo");

            overlay.Markers.Add(new GMapMarkerGoogleGreen(new PointLatLng(Convert.ToDouble(coordinates[2]), Convert.ToDouble(coordinates[3]))));
            mapexplr.Overlays.Add(overlay);
        }
问题是没有显示我的标记。我认为这是因为双打的格式不正确。上述链接的结果如下:

200,4,51.8248681,4.7731624

当我将值
4.7731624
转换为双精度时,得到的是
47731624
,没有点


因此,我的问题是,如何将字符串转换为double,并将点放在正确的位置?

很可能是由于您的区域性-在这种情况下,听起来您需要不变的区域性:

double longitude = double.Parse(text, CultureInfo.InvariantCulture);

(您可能希望使用
double.TryParse
来优雅地处理它不是有效值的可能性。)

只需使用double.Parse()并传递包含lat/long坐标的字符串即可

是的,使用TryParse,但将double初始化为无效的纬度/经度值,所以你知道它是否失败。@twilson:TryParse的关键在于返回值告诉你它是否失败。用于
out
参数的任何值的上一个值都是不相关的-它无论如何都会被覆盖。哎呀,我的糟糕,出于某种暂时逃过我注意的原因:哦,疯狂。@JonSkeet,谢谢,就是这样:)
Convert.ToDouble
已经使用了
double.Parse
-但它将使用默认区域性,如果它有一个小数点分隔符“,”和一个千位分隔符“,”,那么它就不起作用了,这就是我怀疑正在发生的事情……谢谢Jon!我没有意识到荷兰的小数点分隔符与北美的小数点分隔符不同。再次感谢你的提醒!你正在使用一个-所以你可能不能指望它工作太久。您可能应该改为使用。