Forma de desempenho para verificar java.lang.Double para igualdade

Qual é a maneira mais eficaz de verificar valores duplos para igualdade.

Eu entendi aquilo

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

boolean eq = (a == b);

é lento.

Então estou usando

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

O problema é queInfinitest está elogiando os testes que levam muito tempo. Não é grande coisa (1 segundo no topo), mas me deixou curioso.

informação adicional

a é codificado por ser o valor esperado,b é calculado por

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

Atualizar

java.lang.Double faz desse jeito

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

Então, pode-se supor que essa é a melhor prática.

questionAnswers(3)

yourAnswerToTheQuestion