我在Android应用中使用纬度/经度。为什么人们将它们转换为1E6? (即* 1000000)这似乎是一个不必要的步骤。有什么好处?这些值不能简单地存储为double或float吗?请解释。谢谢 -
答案 0 :(得分:12)
为什么人们将它们转换为1E6?
因为Google Maps附加API需要它。
有什么好处?这些值不能简单地存储为double或float吗?
当桌面电脑 - 更不用说笔记本电脑 - 可能没有浮点协处理器时,你可能还太小了。您可以选择购买486SX或486DX CPU,SX变体更便宜但缺少浮点协处理器。没有浮点协处理器的CPU仍然可以进行浮点计算,但非常慢。英特尔在创建奔腾处理器时抛弃了整个SX / DX拆分,因此对于大多数传统PC来说,这已经有一段时间不存在问题了。
然而,在前几代Android设备的核心ARMv5 CPU也缺少浮点协处理器。尝试在这样的设备上进行Java浮点数学运算对于Google Maps来说速度慢,速度太慢。因此,他们将单位从度数转换为微度,以便他们可以在定点数学中进行所有计算,这是可以接受的快速。
答案 1 :(得分:1)
前段时间我曾使用过GPS设备,而我以前做过那种转换主要是出于以下原因:
1E6
可以容纳4个字节的int
,如果您使用的是double
答案 2 :(得分:0)
根据Google的API选择,超过1E6的精度不够准确。它为大量的地图点节省了空间,就像谷歌这样的复杂地图系统所需要的那样。