Тест на равенство с плавающей точкой. (FE_FLOATING_POINT_EQUALITY)

Я использую findbugs в сценарии ANT, и я не могу понять, как исправить две из моих ошибок. Я прочитал документацию, но не понимаю. Вот мои ошибки и код, который идет с ними:

Ошибка 1: Проверка на равенство с плавающей точкой. (FE_FLOATING_POINT_EQUALITY)

private boolean equals(final Quantity other) {
    return this.mAmount == convertedAmount(other);
}

Ошибка 2: EQ_COMPARETO_USE_OBJECT_EQUALS

public final int compareTo(final Object other) {
    return this.description().compareTo(((Decision) other).description());
}

Я прочитал документацию по проблеме ComparesTo, в которой говорится

Настоятельно рекомендуется, но не обязательно, чтобы (x.compareTo (y) == 0) == (x.equals (y)). Вообще говоря, любой класс, который реализует интерфейс Comparable и нарушает это условие, должен четко указывать на этот факт. Рекомендуемый язык: «Примечание: этот класс имеет естественный порядок, не совместимый с равными».

а также документы, касающиеся равенства с плавающей точкой

Эта операция сравнивает два значения с плавающей точкой на равенство. Поскольку вычисления с плавающей запятой могут включать округление, вычисленные значения с плавающей запятой и двойные значения могут быть неточными. Для значений, которые должны быть точными, таких как денежные значения, рассмотрите возможность использования типа с фиксированной точностью, такого как BigDecimal. Для значений, которые не обязательно должны быть точными, рассмотрите возможность сравнения на равенство в некотором диапазоне, например: if (Math.abs (x - y) <.0000001). См. Спецификацию языка Java, раздел 4.2.4.

Я не понимаю, хотя. Может кто-нибудь, пожалуйста, помогите?

Ответы на вопрос(3)

Ваш ответ на вопрос