Вопрос
Есть ли в Ruby какая-то функциональность / синтаксис для сравнения двух чисел с дельтой? Что-то похожее на assert_in_delta (Ожидаемый_флоат, актуальный_флоат, дельта) из test / unit , но возвращающее логическое значение?
Решение
(expected_float - actual_float).abs <= delta
Другие советы
В зависимости от вашего приложения и того, что на самом деле представляют значения с плавающей запятой, может иметь смысл преобразовать их в Rationals с заданной точностью. Тогда прямые сравнения всегда будут вести себя корректно, поскольку Rational - это просто два целых числа.
Например, если вы знаете, что имеете дело с суммами в долларах США, сохранение их как amount.to_r.round (2)
позволяет проводить точные сравнения на равенство.
Просто мысль ... не все нецелочисленные значения должны быть точно представленными числами с плавающей точкой
вам также может понадобиться расчет относительного допуска / дельты