相关疑难解决方法(0)

测试浮点相等.(FE_FLOATING_POINT_EQUALITY)

我在ANT脚本中使用了一个findbugs,我无法弄清楚如何解决我的两个错误.我已阅读文档,但不明白.以下是我的错误以及与之相关的代码:

错误1:测试浮点相等性.(FE_FLOATING_POINT_EQUALITY)

private boolean equals(final Quantity other) {
    return this.mAmount == convertedAmount(other);
}
Run Code Online (Sandbox Code Playgroud)

错误2:EQ_COMPARETO_USE_OBJECT_EQUALS

public final int compareTo(final Object other) {
    return this.description().compareTo(((Decision) other).description());
}
Run Code Online (Sandbox Code Playgroud)

我已经阅读了ComparesTo问题的文档

强烈建议,但并非严格要求(x.compareTo(y)== 0)==(x.equals(y)).一般来说,任何实现Comparable接口并且违反此条件的类都应该清楚地表明这一事实.推荐的语言是"注意:此类具有与equals不一致的自然顺序."

还有关于浮点平等的文档

此操作比较两个浮点值是否相等.由于浮点计算可能涉及舍入,因此计算的浮点值和双精度值可能不准确.对于必须精确的值,例如货币值,请考虑使用固定精度类型,例如BigDecimal.对于不必精确的值,请考虑比较某些范围内的相等性,例如:if(Math.abs(x-y)<.0000001).请参阅Java语言规范,第4.2.4节.

我不明白.有人可以帮忙吗?

java ant findbugs

20
推荐指数
2
解决办法
3万
查看次数

Python中的浮点相等

我有一段代码的行为不同,这取决于我是否通过字典获取转换因子或我是否直接使用它们.

将打印以下代码 1.0 == 1.0 -> False

但是,如果你更换factors[units_from]10.0,并factors[units_to ]1.0 / 2.54它将打印1.0 == 1.0 -> True

#!/usr/bin/env python

base = 'cm'
factors = {
    'cm'        : 1.0,
    'mm'        : 10.0,
    'm'         : 0.01,
    'km'        : 1.0e-5,
    'in'        : 1.0 / 2.54,
    'ft'        : 1.0 / 2.54 / 12.0,
    'yd'        : 1.0 / 2.54 / 12.0 / 3.0,
    'mile'      : 1.0 / 2.54 / 12.0 / 5280,
    'lightyear' : 1.0 / 2.54 / …
Run Code Online (Sandbox Code Playgroud)

python floating-point equality

16
推荐指数
3
解决办法
2万
查看次数

标签 统计

ant ×1

equality ×1

findbugs ×1

floating-point ×1

java ×1

python ×1