double 値が等しいかどうかをチェックする最もパフォーマンスの高い方法は何ですか?
という事は承知しています
double a = 0.00023d;
double b = 0.00029d;
boolean eq = (a == b);
遅い。
だから私は使用しています
double epsilon = 0.00000001d;
eq = Math.abs(a - b) < epsilon;
問題は、Infinitest
テストに時間がかかりすぎることについて不平を言っていることです。大したことではありませんが (1 秒トップ)、気になりました。
追加情報
a
これは期待値であるためハードコードされており、次のようb
に計算されます。
// fyi: current = int, max = int
public double getStatus()
{
double value = 0.0;
if (current != 0 && max != 0)
value = ((double) current) / max;
return value;
}
アップデート
java.lang.Double はそのようにします
public boolean equals(Object obj) {
return (obj instanceof Double)
&& (doubleToLongBits(((Double)obj).value) ==
doubleToLongBits(value));
}
したがって、それがベストプラクティスであると想定できます。