逗号以无限小数形式插入

时间:2014-10-29 14:23:02

标签: javascript c# google-maps

我正在开发一个使用Google地图折线的全局坐标的应用。我正在使用C#3.5,并在Windows 8上工作。运行时,我的程序会生成许多坐标,并将它们输出到html文件中的js代码中。 在我的计算机上,程序工作正常,它正在完成它的工作,并生成一个坐标如下的js代码:

new google.maps.LatLng(47.6370775, 19.0505071666666667),
new google.maps.LatLng(47.637077333333333, 19.0505070),
new google.maps.LatLng(47.6370775, 19.0505066666666667),

但是,当我在计算机上运行该程序时,我想稍后使用,会发生一些奇怪的事情,并输出如下代码:

new google.maps.LatLng(47.6370775, 19.0505071,666666667),
new google.maps.LatLng(47.637077,333333333, 19.0505070),
new google.maps.LatLng(47.6370775, 19.0505066,666666667),

注意无限小数之前的逗号。所述计算机运行Windows XP SP3,因此它是一个很旧的系统,但它安装了.NET 3.5。使用这些坐标会在谷歌地图中产生意想不到的结果(它将中心点放在叙利亚,而不是匈牙利,它的意图就在那里)。 我不确定操作系统或我的应用程序是否进行了更改,我无法调试,因为此系统没有安装VS(我无法安装)。

更新

从文本文件中获取的原始坐标:

01903.43995

转换方法(纬度是字符串中的坐标)

latitude = latitude.TrimStart('0');
latitude = latitude.Insert(2, ".");
string[] currentcoord = latitude.Split('.');
string temp = currentcoord[1] + currentcoord[2];
string[] temp2;
if ((((double.Parse(temp) / 60) * 100).ToString()).Contains("."))
{
   temp2 = (((double.Parse(temp) / 60) * 100).ToString()).Split('.');
   currentcoord[1] = temp2[0] + temp2[1];
}
else
{
   currentcoord[1] = ((double.Parse(temp) / 60) * 100).ToString();
}
converted += currentcoord[0] + "." + currentcoord[1] + ";";

“converted”是转换的结果,坐标随后用作输出。 (在这种情况下,它应该是19.0505071666666667,或类似​​的东西)。

1 个答案:

答案 0 :(得分:2)

另一台计算机可能具有不同的区域设置,因此.ToString()会产生一个您没有依赖'.'的值。

您应该使用.ToString(CultureInfo.InvariantCulture)Parse(s, CultureInfo.InvariantCulture)代替。