Есть ли встроенный метод для поиска следующего наибольшего двойного числа в Java?
При написании теста я иногда хочу убедиться, что операция выполняется успешно для x
, но не для значений, превышающих x
. Один из способов сделать это - показать, что операции не выполняются для x + eps
. Но eps
должен быть выбран с учетом значения x
, чтобы избежать таких проблем, как 180 + 1e-15 == 180
.
Чтобы автоматически выбрать eps
, я бы хотел найти наименьшее представимое число больше x
. Я был удивлен, что не нашел стандартного библиотечного метода, поэтому написал следующее:
public static double nextDouble(double d) {
if (d < 0) {
return -prevDouble(Math.abs(d));
} else {
return Double.longBitsToDouble(Double.doubleToLongBits(d) + 1);
}
}
public static double prevDouble(double d) {
if (d < 0) {
return -nextDouble(-d);
} else {
return Double.longBitsToDouble(Double.doubleToLongBits(d) - 1);
}
}
Должен ли я использовать эти пользовательские функции или есть встроенный подход?