测试浮点相等性。(FE_FLOATING_POINT_EQUALITY)
我在ANT脚本中使用了findbugs,但我不知道如何修复我的两个错误。我已经阅读了文档,但不明白。以下是我的错误和随之而来的代码:
错误 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))。一般来说,任何实现Able接口并违反此条件的类都应该清楚地表明这一事实。推荐的语言是“注意:这个类有一个与equals不一致的自然排序。
以及关于浮点相等性的文档
此操作将比较两个浮点值以实现相等。由于浮点计算可能涉及舍入,因此计算的浮点数和双精度值可能不准确。对于必须精确的值(如货币值),请考虑使用固定精度类型(如 BigDecimal)。对于不需要精确的值,请考虑比较某个范围内的相等性,例如:如果( Math.abs(x - y) < .0000001 )。请参阅 Java 语言规范,第 4.2.4 节。
我不明白。任何人都可以帮忙吗?