Comparación de valores dobles para la igualdad en Java.

Quisiera algunos consejos de personas que tienen más experiencia trabajando con primitivos.double igualdad en Java. Utilizandod1 == d2 para dos doblesd1 yd2 no es suficiente debido a posibles errores de redondeo.

Mis preguntas son:

Es de JavaDouble.compare(d1,d2) == 0 manejo de errores de redondeo hasta cierto punto? Como se explica en el1.7 documentación devuelve valor0 Sid1 es numéricamente igual ad2. ¿Alguien está seguro de qué quieren decir exactamente con numéricamente iguales?

Usando el cálculo de error relativo contra algún valor delta, ¿recomendaría un valor genérico (no específico de la aplicación) delta? Por favor, vea el ejemplo a continuación.

A continuación se muestra una función genérica para verificar la igualdad considerando el error relativo. Que valor dedelta ¿recomendaría capturar la mayoría de los errores de redondeo de operaciones simples +, -, /, * operaciones?

public static boolean isEqual(double d1, double d2) {
    return d1 == d2 || isRelativelyEqual(d1,d2);
}

private static boolean isRelativelyEqual(double d1, double d2) {
    return delta > Math.abs(d1- d2) / Math.max(Math.abs(d1), Math.abs(d2));
}

Respuestas a la pregunta(3)

Su respuesta a la pregunta