首页 > 解决方案 > 如何在数据库的 FLOAT(10,8) 列中存储数字(120)?

问题描述

我有longitudelatitude 120-128.67500305。它们在数据库中保存为FLOAT(10,8). 如何将 longitude=120 发送到 MySQL 数据库?在这里,我使用 Go 作为 API。当我将经度 = 120 发送到 DB 时,它会显示错误“列‘经度’的值超出范围”。有人能帮我吗?

标签: mysql

解决方案


不要使用浮点数据类型来保留精确的数字值

Float 是一种不精确(浮动)的数学存储机制。在 MySQL 上用于存储特定的十进制值,您应该使用DECIMAL数字类型。

我意识到这很令人困惑,因为float在 PHP 和其他地方意味着整数之间的十进制数。

例子:

Latitude DECIMAL(11,8) SIGNED

这将存储小数点后 8 位的 11 位数值。如:

-128.67500305

它永远不会四舍五入这个值,但会默默地切掉任何长于设定长度(11位)的额外数字

参考:

在此处阅读有关 Decimal 数据类型的信息。

在这里阅读一个非常相似的问题

在此处阅读MySQL 关于如何存储浮点数据的建议。

另请参阅此问题/答案,它实际上建议使用空间数据类型来存储 Lat/Long 值。


推荐阅读