加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySql使用Float数据类型存储地理坐标

发布时间:2020-12-11 23:53:24 所属栏目:MySql教程 来源:网络整理
导读:我有一个存储经度和纬度坐标的表格(谷歌地图)我将列定义为浮点数但是当我尝试插入一个值-61.45859899999999和10.28289时,它们将四舍五入为-61.46和10.30.如何修改列以保持数据不变. 我正在使用mysql toad. Under是表的代码: CREATE TABLE `tblGeoCodes` ( `

我有一个存储经度和纬度坐标的表格(谷歌地图)我将列定义为浮点数但是当我尝试插入一个值-61.45859899999999和10.28289时,它们将四舍五入为-61.46和10.30.如何修改列以保持数据不变.

我正在使用mysql toad. Under是表的代码:

CREATE TABLE `tblGeoCodes` (
  `recNo` int(11) NOT NULL AUTO_INCREMENT,`longLocation` float(30,2) DEFAULT NULL,`latLocation` float(30,2) DEFAULT NULL 
最佳答案 您的实施有两个问题.

将值四舍五入为2位精度的原因是您明确将比例定义为2.

此外,FLOAT是MySQL中不精确的数据类型.

要解决这两个问题,您应该使用具有适当精度和比例的DECIMAL数据类型.

例如,像这样:

CREATE TABLE `tblGeoCodes` (
  `recNo` int(11) NOT NULL AUTO_INCREMENT primary key,`longLocation` decimal(18,14) DEFAULT NULL,`latLocation` decimal(18,14) DEFAULT NULL
); 

例:

mysql> CREATE TABLE `tblGeoCodes` (
    ->   `recNo` int(11) NOT NULL AUTO_INCREMENT primary key,->   `longLocation` decimal(18,->   `latLocation` decimal(18,14) DEFAULT NULL
    -> ); 
Query OK,0 rows affected (0.02 sec)

mysql> 
mysql> insert into tblGeoCodes (longLocation,latLocation) values(-61.45859899999999,10.28289);
Query OK,1 row affected (0.00 sec)

mysql> 
mysql> select * from tblGeoCodes;
+-------+--------------------+-------------------+
| recNo | longLocation       | latLocation       |
+-------+--------------------+-------------------+
|     1 | -61.45859899999999 | 10.28289000000000 |
+-------+--------------------+-------------------+
1 row in set (0.00 sec)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读