Una forma sencilla de comprobar java.lang.Double para la igualdad

¿Cuál es la forma más eficaz de verificar la igualdad de valores dobles?

Entiendo que

double a = 0.00023d;
double b = 0.00029d;

boolean eq = (a == b);

es lento.

Entonces estoy usando

double epsilon = 0.00000001d;
eq = Math.abs(a - b) < epsilon;

El problema es eseInfinitest es complaning acerca de las pruebas que toman demasiado tiempo. No es un gran problema (1 seg arriba), pero me dio curiosidad.

información adicional

a está codificado duro ya que es el valor esperado,b es computado por

  // fyi: current = int, max = int
  public double getStatus()
  {
    double value = 0.0;
    if (current != 0 && max != 0)
      value = ((double) current) / max;
    return value;
  }

Actualizar

java.lang.Double lo hace de esa manera

public boolean equals(Object obj) {
return (obj instanceof Double)
       && (doubleToLongBits(((Double)obj).value) ==
          doubleToLongBits(value));
}

así que uno podría asumir que esa es la mejor práctica.

Respuestas a la pregunta(3)

Su respuesta a la pregunta