Что значит для двух двойных быть «примерно равными»? Это означает, что двойники находятся в некоторой терпимости друг к другу. Размер этого допуска и то, выражается ли это отклонение в виде абсолютного числа или в процентах от двух двойных, зависит от вашего приложения.
Например, две фотографии, отображаемые в программе просмотра фотографий, имеют приблизительно одинаковую ширину в дюймах, если они занимают одинаковое количество пикселей на экране, поэтому ваш допуск будет абсолютным числом, рассчитанным на основе размера пикселя для вашего экрана. С другой стороны, прибыль двух финансовых фирм, вероятно, «приблизительно равна», если они находятся в пределах 0,1% друг от друга. Это только гипотетические примеры, но дело в том, что это зависит от вашего приложения.
Теперь для некоторой реализации. Допустим, ваше приложение требует абсолютной терпимости. Тогда вы можете использовать
private static final double TOLERANCE = 0.00001;
public static boolean approxEqual(final double d1, final double d2) {
return Math.abs(d1 - d2) < TOLERANCE;
}
для сравнения двух двойных чисел и используйте
approxEqual(d1, d2) && approxEqual(d1, d3) && approxEqual(d1, d4) && approxEqual(d1, d5)
для сравнения пяти двойных.