mysql - 如何在数据库的 FLOAT(10,8) 列中存储数字(120)?
问题描述
我有longitude
和latitude
120
,-128.67500305
。它们在数据库中保存为FLOAT(10,8)
. 如何将 longitude=120 发送到 MySQL 数据库?在这里,我使用 Go 作为 API。当我将经度 = 120 发送到 DB 时,它会显示错误“列‘经度’的值超出范围”。有人能帮我吗?
解决方案
不要使用浮点数据类型来保留精确的数字值
Float 是一种不精确(浮动)的数学存储机制。在 MySQL 上用于存储特定的十进制值,您应该使用DECIMAL数字类型。
我意识到这很令人困惑,因为float
在 PHP 和其他地方意味着整数之间的十进制数。
例子:
Latitude DECIMAL(11,8) SIGNED
这将存储小数点后 8 位的 11 位数值。如:
-128.67500305
它永远不会四舍五入这个值,但会默默地切掉任何长于设定长度(11位)的额外数字
参考:
在此处阅读有关 Decimal 数据类型的信息。
在这里阅读一个非常相似的问题
在此处阅读MySQL 关于如何存储浮点数据的建议。
另请参阅此问题/答案,它实际上建议使用空间数据类型来存储 Lat/Long 值。
推荐阅读
- javascript - 如何解决搜索框反应中的异步行为
- f# - F# 中自定义运算符的优先级
- python - 将 df.groupby....max() 结果输入到新列中。熊猫
- ocr - DOCUMENT_TEXT_DETECTION 语言提示
- gstreamer - Gstreamer RTSP 源到 SRT,无需转码
- multithreading - 你怎么能阻塞一个线程,直到许多通道之一变得可读?
- c# - 如何在 ASP.NET Core(.NET 6、VS 2022)中禁用浏览器链接
- javascript - TypeError:无法使用 react joi-browser 包读取未定义的属性(读取“字符串”)
- php - 将英语日期转换为法语
- python-3.x - 手动检查结果与通过 BeautifulSoup 抓取的结果不匹配