В зависимости от вашего приложения и того, что на самом деле представляют значения с плавающей запятой, может иметь смысл преобразовать их в Rationals с заданной точностью. Тогда прямые сравнения всегда будут вести себя корректно, поскольку Rational - это просто два целых числа.
Например, если вы знаете, что имеете дело с суммами в валюте США, сохранение их как amount.to_r.round(2)
позволяет проводить точные сравнения на равенство.
Просто мысль ... не все нецелые значения должны быть неточно представленными числами с плавающей точкой