如何使用rails在mysql数据库中查找浮点值

ker*_*ion 3 mysql ruby-on-rails where-clause

假设我有一个名为 的 Rails 模型Position,两列latitudelongitude(均定义为浮动)。我已经用一些位置值填充了模型。现在我试图根据它的纬度找到位置:

positions = Position.where('positions.latitude = ?', 50.0)
Run Code Online (Sandbox Code Playgroud)

返回零。即使我尝试这个:

lat = Position.first.latitude
positions = Position.where('positions.latitude = ?', lat)
Run Code Online (Sandbox Code Playgroud)

结果为零。我的生产数据库是mysql。上面的代码在开发中(sqlite)。我的假设是它与数据类型的处理方式有关,但我不明白。有人有什么想法吗?

Bil*_*win 5

当您需要精确的数值时,请勿使用FLOAT或。DOUBLE

阅读https://dev.mysql.com/doc/refman/8.0/en/problems-with-float.html

相反,使用DECIMALor NUMERIC(它们是同义词)。

请参阅存储纬度和经度的准确度应如何?DECIMAL有关用于纬度和经度的具体精度的一些指导。