2014-10-29 69 views
0

我正在VS中開發一個應用程序,該應用程序使用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。使用這些座標會在Google Maps中產生意想不到的結果(它將中心置於敘利亞,而不是匈牙利)。 我不確定操作系統或我的應用程序是否進行了更改,但我無法調試,因爲此係統沒有安裝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] + ";"; 

「轉化」是轉換的結果,這個座標然後被用作輸出。 (在這種情況下,它應該是19.0505071666666667,或類似​​的東西)。

+2

生成數字是什麼? – epascarello 2014-10-29 14:27:05

+0

很明顯,「你的程序」不能「正常工作」,但沒有看到產生數字的實際代碼,所以不可能提出任何具體的建議。很可能你處理文化特定的數字轉換錯誤......但很難肯定地說。 – 2014-10-29 14:29:13

+0

我已經用轉換方法更新了這個問題。 請注意,在我的電腦下生成的座標是我正在尋找的座標。他們是非常準確的,他們或任何問題都沒有問題。所以我不希望有不同的數字,但這些數字沒有逗號。 – zergerge 2014-10-29 14:39:43

回答

2

另一臺計算機可能有不同的區域設置,因此.ToString()產生的值不依賴於'.'

您應該使用.ToString(CultureInfo.InvariantCulture)Parse(s, CultureInfo.InvariantCulture)來代替。

+0

他說什麼。您也可以在轉換代碼之前放置'System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.InvariantCulture;'行。 – 2014-10-29 15:18:17

+0

是的,這確實是問題,它現在起作用。謝謝! – zergerge 2014-10-29 15:34:33

+0

不客氣!我會建議你簡化你的代碼,至少擺脫明顯的重複。 – 2014-10-29 15:46:00