2012-07-03 128 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