ANT スクリプトで findbugs を使用していますが、2 つのエラーを修正する方法がわかりません。ドキュメントを読みましたが、理解できません。ここに私のエラーとそれに伴うコードがあります:
エラー 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 インターフェースを実装し、この条件に違反するクラスは、この事実を明確に示す必要があります。推奨される言語は、「注: このクラスには、equals と矛盾する自然な順序付けがあります。」
また、浮動小数点の等価性に関するドキュメント
この操作は、2 つの浮動小数点値が等しいかどうかを比較します。浮動小数点の計算には丸めが含まれる場合があるため、計算された float 値と double 値は正確ではない場合があります。金額など、正確でなければならない値については、BigDecimal などの固定精度型の使用を検討してください。正確である必要のない値については、たとえば if ( Math.abs(x - y) < .0000001 ) のように、ある範囲内で等しいかどうかを比較することを検討してください。Java 言語仕様のセクション 4.2.4 を参照してください。
わからないけど。誰でも助けてもらえますか?