ruby-on-rails - 查询近似相等

标签 ruby-on-rails postgresql activerecord decimal

给定一个小数列,有没有一种好的方法来查询近似相等?

您可以使用范围:

Purchase.where(total: (value - delta)..(value + delta)).first

但这看起来是一个很常见的问题,Rails 通常会尝试为您解决,因为 float 并不总是能够准确表示。

最佳答案

我不确定是否有一个 gem 可以让您在事件记录中干净地执行此操作,但是您是否尝试过使用 SQL 舍入而不是使用范围?像这样的东西:

Purchase.where('ROUND(total, 2) = ?', 30.67)

查看此answer 。还有docs的链接。最后,考虑将美分存储在数据库中,如this answer然后只需更改它们以进行显示,从而避免过多处理浮点。

关于ruby-on-rails - 查询近似相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40804684/

相关文章:

ruby-on-rails - ruby /rails : How can I display a number in scientific notation?

ruby-on-rails - 给每个 Post 实例一个自定义的订单位置

ruby-on-rails - Heroku 没有更新 rails 应用程序的 css

postgresql - 如何编写返回文本或整数值的函数?

ruby-on-rails - before_save , before_validation :on => :save

ruby-on-rails - 有没有更高效的方法来创建这个数组?

postgresql - “LANGUAGE ' plpgsql'VOLATILE”是什么意思?

postgresql - 光滑的查询非常慢

ruby-on-rails - 将列名作为变量传递给 ActiveRecord 查询

php - SELECT 字段列表中的 CONCAT() 函数