2012-07-03 96 views
3

我正在使用緯度/經度在我的Android應用程序。爲什麼人們將它們轉換爲1E6? (即* 1000000)這似乎是一個不必要的步驟。有什麼好處?不能將這些值存儲爲double或float嗎?請解釋。謝謝 -爲什麼經度和緯度值轉換爲1E6?

+0

整型數學運算爲您節省空間的一半比浮點更快。 – Geobits

回答

1

我與GPS設備較早前曾和我以前做這種轉換的主要有以下原因:

  1. 有一個值,該值大於1E6並沒有真正意義的,除非你有最新的,並且具有極高的精度最大的軍用GPS設備
  2. 1E6可以在int這是4個字節用來存放,這樣,如果你使用的是double
+0

感謝您的反饋。我回去並更新我的源代碼,將值存儲爲(1E6)整數而不是字符串。 – nesterenes

0

根據Google的API選擇,超出1E6的精度不夠準確。它爲像Google這樣的複雜地圖系統所需的大量地圖點節省了空間。

12

爲什麼人們將它們轉換爲1E6?

因爲Google地圖附加API需要它。

有什麼好處?不能將這些值存儲爲double或float嗎?

您可能太年輕了,無法記住臺式電腦 - 更不用說筆記本電腦 - 可能沒有浮點協處理器。您會選擇購買486SX或486DX CPU,而SX變種更便宜,但缺乏浮點協處理器。沒有浮點協處理器的CPU仍然可以進行浮點計算,但是非常緩慢地進行。英特爾在創建奔騰處理器時拋棄了整個SX/DX的分割,對於大多數傳統PC來說,這一直都不是問題。

然而,處於頭幾代Android設備核心的ARMv5 CPU也缺乏浮點協處理器。嘗試在這些設備上執行Java浮點運算對於Google地圖來說太慢了,太慢了。所以,他們將單位從度數切換到微度數,以便他們可以在定點數學中做所有的計算,這是可以接受的快速。

+0

+1。我沒有意識到Android上的這種限制! – GETah