3

我在我的 android 应用程序中使用纬度/经度。为什么人们将它们转换为 1E6?(即* 1000000)这似乎是一个不必要的步骤。有什么好处?值不能简单地存储为双精度或浮点数吗?请解释。谢谢 -

4

3 回答 3

12

为什么人们将它们转换为 1E6?

因为 Google Maps 插件 API 需要它。

有什么好处?值不能简单地存储为双精度或浮点数吗?

您可能还太年轻,不记得台式电脑(更不用说笔记本电脑)何时可能没有浮点协处理器。您会选择购买 486SX 或 486DX CPU,SX 变体更便宜但缺少浮点协处理器。没有浮点协处理器的 CPU 仍然可以进行浮点计算,但速度很慢。英特尔在创建奔腾处理器时放弃了整个 SX/DX 拆分,因此对于大多数传统 PC 来说,这已经不是问题了一段时间了。

然而,作为前几代 Android 设备核心的 ARMv5 CPU 也缺少浮点协处理器。尝试在此类设备上进行 Java 浮点数学运算速度很慢,对于 Google 地图来说太慢了。因此,他们将单位从度数转换为微度数,以便他们可以在定点数学中进行所有计算,速度快得可以接受。

于 2012-07-03T19:12:43.013 回答
2

前段时间我使用 GPS 设备,我曾经进行过这种转换,主要是出于以下原因:

  1. 具有大于 1E6 的值并没有真正的意义,除非您拥有最新和最出色的军用 GPS 设备,而且精度很高
  2. 1E6可以容纳int4 个字节的空间,如果您使用的是double
于 2012-07-03T19:13:49.100 回答
0

根据 Google 的 API 选择,超过 1E6 的精度不够准确。它为各种地图点节省了空间,例如谷歌等复杂地图系统所需的地图点。

于 2012-07-03T19:07:56.190 回答