给定一个小数列,有没有一种好的方法来查询近似相等?
您可以使用范围:
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/