为什么经度和纬度值转换为1E6?
我正在使用纬度/经度在我的Android应用程序。为什么人们将它们转换为1E6? (即* 1000000)这似乎是一个不必要的步骤。有什么好处?不能将这些值存储为double或float吗?请解释。谢谢 -为什么经度和纬度值转换为1E6?
我与GPS设备较早前曾和我以前做这种转换的主要有以下原因:
- 有一个值,该值大于1E6并没有真正意义的,除非你有最新的,并且具有极高的精度最大的军用GPS设备
-
1E6
可以在int
这是4个字节用来存放,这样,如果你使用的是double
感谢您的反馈。我回去并更新我的源代码,将值存储为(1E6)整数而不是字符串。 – nesterenes
根据Google的API选择,超出1E6的精度不够准确。它为像Google这样的复杂地图系统所需的大量地图点节省了空间。
为什么人们将它们转换为1E6?
因为Google地图附加API需要它。
有什么好处?不能将这些值存储为double或float吗?
您可能太年轻了,无法记住台式电脑 - 更不用说笔记本电脑 - 可能没有浮点协处理器。您会选择购买486SX或486DX CPU,而SX变种更便宜,但缺乏浮点协处理器。没有浮点协处理器的CPU仍然可以进行浮点计算,但是非常缓慢地进行。英特尔在创建奔腾处理器时抛弃了整个SX/DX的分割,对于大多数传统PC来说,这一直都不是问题。
然而,处于头几代Android设备核心的ARMv5 CPU也缺乏浮点协处理器。尝试在这些设备上执行Java浮点运算对于Google地图来说太慢了,太慢了。所以,他们将单位从度数切换到微度数,以便他们可以在定点数学中做所有的计算,这是可以接受的快速。
+1。我没有意识到Android上的这种限制! – GETah
整型数学运算为您节省空间的一半比浮点更快。 – Geobits