0
SonarQube有一个rule报告下面的代码中的一个错误,指出“浮点数不应测试相等性”。通常这个规则是有道理的,但在这种情况下,这似乎是一个误报。如果是这样,我想这样标记它,而不是用Double.compare
构造来解决它,检查中间结果+/-Infinity
,NaN
或类似的东西。比较分母== 0.0d以防止被零除是否正确?
public void f(double denominator)
{
if (denominator == 0.0d)
throw new IllegalArgumentException("Division by zero.");
// code that involves division by denominator ...
}
因此,问题:是否上面的代码抛出IllegalArgumentException
当且仅当(只有在含有double
表示方法)通过denominator
分裂将导致+/-Infinity
或NaN
中间值?