SonarQubeにはruleがあります。このコードでは、「浮動小数点数は等しいかどうかをテストするべきではありません。」というバグが報告されています。一般的にこのルールは正当ですが、この場合は偽陽性のようです。そうであれば、Double.compare
のコンストラクトを使用して回避するのではなく、+/-Infinity
、NaN
などの中間結果をチェックするのではなく、そのようにフラグを立てたいと思います。 denominator == 0.0dを比較してゼロ除算を防ぐのは正しいですか?
public void f(double denominator)
{
if (denominator == 0.0d)
throw new IllegalArgumentException("Division by zero.");
// code that involves division by denominator ...
}
従って質問は:上記のコードはIllegalArgumentException
をスローしない場合とdenominator
除算(double
Sを含有する式でのみ)+/-Infinity
又はNaN
中間値をもたらす場合にのみ?