给定一个十进制列,有没有一种很好的方法来查询近似相等?
您可以使用范围:
Purchase.where(total: (value - delta)..(value + delta)).first
但这看起来是一个很常见的问题,Rails通常会为您解决,因为浮点数不能总是精确地表示。
最佳答案
我不确定是否有一个gem允许您在活动记录中干净地执行此操作,但是您是否尝试过使用SQL舍入而不是使用范围?类似于:
Purchase.where('ROUND(total, 2) = ?', 30.67)
看这个answer。以及其中到docs的链接。最后,考虑像在this answer中那样将美分存储在数据库中,然后将其更改为显示,这样就避免了大量处理浮点。
关于ruby-on-rails - 查询近似相等,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40804684/