我有private Task OnUserInformationReceived(UserInformationReceivedContext c)
{
var userId = c.User.Value<string>("sub");
var dbContext = c.HttpContext.RequestServices.GetService<YourDbContext>();
// Use dbContext here.
return Task.CompletedTask;
}
和longitude
latitude
,120
。它们以-128.67500305
的形式保存在数据库中。如何发送经度= 120到MySQL数据库?在这里,我使用Go for API。当我向数据库发送经度= 120时,它显示错误“列'经度'超出范围值”。有人可以帮我吗?
答案 0 :(得分:4)
Float是一种不精确的( floating )数学存储机制。在用于存储特定十进制值的MySQL上,您应该使用 DECIMAL 数字类型。
我意识到这令人困惑,因为float
在PHP中可能会引起混淆,而在其他地方则表示整数之间的十进制数。
Latitude DECIMAL(11,8) SIGNED
这将存储一个11位数的值,小数点后为8位数。如:
-128.67500305
它永远不会舍入该值,但是会自动切掉任何超过设置长度(11位)的多余数字
Read here关于十进制数据类型。
Read here一个非常相似的问题
Read here来自MySQL的有关如何存储Float数据的建议。
另请参见this question/answer,该指南实际上建议使用空间数据类型存储纬度/经度值。
答案 1 :(得分:2)
尽管还有其他有用的指南,说明了将哪种数据类型用于地理坐标,但特定的错误就在您的问题中-“超出范围的值” 。
MySQL中的FLOAT(10, 8)
类型只能存储±100.0范围内的值。