java - 为什么纬度和经度值会转换为 1E6?

标签 java android geolocation

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

最佳答案

Why do people convert them to 1E6?

因为 Google map 附加 API 需要它。

What's the benefit? Can't the values simply be stored as a double or float?

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

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

关于java - 为什么纬度和经度值会转换为 1E6?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11317483/

相关文章:

android - Logcat 的大小限制是多少以及如何更改其容量?

ios - Whatsapp 如何在不询问位置详细信息的情况下确定用户所在的国家/地区?

java - Apache Spark 找不到 CSVReader 类

java - Perl 与 Java 中的多线程

java - 从需要密码的网站获取数据

java - NetLogo vs. Repast Simphony?

java - 在android中删除一行后如何显示更新的数据库?

java - 在 joda 中覆盖一周的第一天?

ios - 当用户退出区域时删除触发的基于位置的通知

php - 使用 jquery 将地理位置数据保存到 html 文件