如何正确地将纬度和经度坐标插入 mySQL 浮点数?

Posted

技术标签:

【中文标题】如何正确地将纬度和经度坐标插入 mySQL 浮点数?【英文标题】:How do I properly insert latitude & longitude coordinates into mySQL float? 【发布时间】:2017-02-05 17:19:17 【问题描述】:

我正在尝试将150.183502432.8392648 之类的内容作为float 插入到mysql 中。问题是当我尝试创建像 FLOAT 3,7 这样的 mySQL 字段时,它不起作用。正确的格式是什么?

这是我得到的错误:

An error occurred when trying to add the field 'location_lat' via

 ALTER TABLE `data` ADD `location_lat` FLOAT(3,7)
 NULL
 DEFAULT NULL
 AFTER `fees`

MySQL said: For float(M,D), double(M,D) or decimal(M,D), 
M must be >= D (column 'location_lat').

【问题讨论】:

***.com/questions/39612856/… 7 个小数位足以区分一只蚂蚁和另一只蚂蚁。 (矫枉过正。) 【参考方案1】:

查看错误,因为它说 MySQL 说:对于 float(M,D) .. M 必须 >= D 并且您的查询实际上应该是

ALTER TABLE `data` ADD `location_lat` FLOAT(7,3)

通过MySQL Documentation On Floating-Point Types

MySQL 允许使用非标准语法:FLOAT(M,D)。这里,(M,D) 表示比 数值最多可存储 M 位,其中 D 位 可能在小数点后。

【讨论】:

现在对我来说很有意义。之前没有。必须睡觉。谢谢! :)【参考方案2】:

第一个数字是小数点左右的总位数。第二个数字是您想要小数点右边的位数。所以你正在寻找:

ALTER TABLE `data` ADD `location_lat` FLOAT(10,7)

【讨论】:

正确答案应该是这个。浮动(10,7)不浮动(7,3)以下【参考方案3】:

不要不要使用FLOAT(m,d),只需使用FLOAT。前者增加了一个额外的回合,你什么也没买。

FLOAT 在任何一种情况下都占用 4 个字节。

【讨论】:

以上是关于如何正确地将纬度和经度坐标插入 mySQL 浮点数?的主要内容,如果未能解决你的问题,请参考以下文章

将纬度和经度转换为图像上的坐标

如何将 map.getBounds() 作为 4 个浮点数的列表?

如何将两个经纬度浮点数转换为 Google Maps latlng?

如何正确地将作为 CSV 文件中字符串的浮点数/双精度数作为浮点数/双精度数导入程序?

Django中的自定义纬度/经度表单字段

Android - 如何正确地将字符串解析为浮点数(价格数字格式:整数、小数或两者兼有)