Я использую findbugs в ANT script, и я не могу понять, как исправить две мои ошибки. Я прочитал документацию, но не понимаю. Вот мои ошибки и код, который идет с ними:
Ошибка 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 и нарушающий это условие, должен четко указывать этот факт. Рекомендуемый язык: "Примечание: этот класс имеет естественный порядок, который несовместим с равными".
а также документы о равенстве с плавающей запятой
Эта операция сравнивает два значения с плавающей запятой для равенства. Поскольку вычисления с плавающей запятой могут включать округление, расчетные значения float и double могут быть неточными. Для значений, которые должны быть точными, например, денежные значения, следует использовать тип фиксированной точности, такой как BigDecimal. Для значений, которые не обязательно должны быть точными, рассмотрите сравнение для равенства в пределах некоторого диапазона, например: if (Math.abs(x - y) <.0000001). См. Спецификацию языка Java, раздел 4.2.4.
Я не понимаю. Кто-нибудь может помочь?