如何正确地将纬度和经度坐标插入 mySQL 浮点数?
Posted
技术标签:
【中文标题】如何正确地将纬度和经度坐标插入 mySQL 浮点数?【英文标题】:How do I properly insert latitude & longitude coordinates into mySQL float? 【发布时间】:2017-02-05 17:19:17 【问题描述】:我正在尝试将150.1835024
和32.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?