Вопрос

Есть ли в Ruby какая-то функциональность / синтаксис для сравнения двух чисел с дельтой? Что-то похожее на assert_in_delta (Ожидаемый_флоат, актуальный_флоат, дельта) из test / unit , но возвращающее логическое значение?

Это было полезно?

Решение

(expected_float - actual_float).abs <= delta

Другие советы

В зависимости от вашего приложения и того, что на самом деле представляют значения с плавающей запятой, может иметь смысл преобразовать их в Rationals с заданной точностью. Тогда прямые сравнения всегда будут вести себя корректно, поскольку Rational - это просто два целых числа.

Например, если вы знаете, что имеете дело с суммами в долларах США, сохранение их как amount.to_r.round (2) позволяет проводить точные сравнения на равенство.

Просто мысль ... не все нецелочисленные значения должны быть точно представленными числами с плавающей точкой

вам также может понадобиться расчет относительного допуска / дельты

http://realtimecollisiondetection.net/blog/?p=89

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top