我应该使用 double 类型在 mysql DB 中保存坐标吗? [复制]

Posted

技术标签:

【中文标题】我应该使用 double 类型在 mysql DB 中保存坐标吗? [复制]【英文标题】:Should I use double type to save coordinates in mysql DB? [duplicate] 【发布时间】:2012-11-27 15:33:16 【问题描述】:

可能重复:What is the ideal data type to use when storing latitude / longitudes in a mysql database?

我有 GPS 坐标和一些服务提供商转换后的地图坐标以保存到 dababase。我不知道我保存哪种类型的数据是明智的,varchar、float、double?也很容易使用。

我应该根据这些数据进行查询,例如查找“大于”或“小于”某个距离的位置。

“双”似乎没问题。但是当我查看它保存在数据库中的值时。它看起来不好看。它在末尾添加了许多零,因为我必须设置一个小数和长度,这只是基于我拥有的数据的猜测。它有可能改变的风险。事实证明,在其中有数据后,我无法更改小数。如果我这样做了,我只是删除了所有现有数据。

我不知道哪种方式是有效和正确的。

有人有这方面的经验吗?

【问题讨论】:

你有 mysql 作为数据库。但是您使用的是什么前端?因此,您可以使用可以轻松地从 mysql 转换/解析为您的前端语言的数据类型 :) 相应地选择。否则,您只会在将数据保存为 xyz 类型后才知道您没有解析器。但最不可能。 【参考方案1】:

使用 float 而不是 double,除非您是一名土木工程师,正在规划一个 3 英亩的停车场或一座桥梁。在这种情况下,您已经知道您是使用兰伯特投影还是通用横轴墨卡托投影进行制图工作,以及您的高程基于哪个基准面。如果该行话对您来说也可能是古代梵语,那么您只需要浮动,而不是双重。

GPS 坐标和用于将它们应用于诸如商店查找器之类的东西的传统 hasrsine 算法根本没有比 float 提供的精度更高。造成这种情况的原因很复杂,但它们与地球并不是一个完美的球体这一事实有关。

顺便说一句,-xxx.yyyyy 显示精度对 MySQL 来说还算不错。

SELECT FORMAT(latitude, 5) AS latitude 

执行您需要从显示屏上去除大量尾随零的操作。

【讨论】:

【参考方案2】:

我使用 MySQL 的 DECIMAL 数据类型,它也处理坐标中的负值。

【讨论】:

以上是关于我应该使用 double 类型在 mysql DB 中保存坐标吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Mysql 数据库 DOUBLE 类型 数据存入问题 ~~~

“decimal”是啥类型的MySQL?

在MySQL中电话号码的数据类型可以采用double型吗?

MySQL中的decimal是啥类型?

20180510早课记录07-MySQL

mysql存储过程double类型参数问题