【发布时间】:2011-04-19 10:57:07
【问题描述】:
我在 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))。一般来说,任何实现了 Comparable 接口并违反此条件的类都应该清楚地表明这一事实。推荐的语言是“注意:这个类有一个与equals不一致的自然顺序。”
还有关于浮点相等的文档
此操作比较两个浮点值是否相等。因为浮点计算可能涉及四舍五入,所以计算出的 float 和 double 值可能不准确。对于必须精确的值,例如货币值,请考虑使用固定精度类型,例如 BigDecimal。对于不需要精确的值,请考虑比较某个范围内的相等性,例如: if ( Math.abs(x - y)
虽然我不明白。有人可以帮忙吗?
【问题讨论】: