Будучи педантичным, < 0
не даст вам все отрицательные числа.
double d = -0.0;
System.out.println(d + " compared with 0.0 is " + Double.compare(d, 0.0));
System.out.println(d + " < 0.0 is " + (d < 0.0));
печатает
-0.0 compared with 0.0 is -1
-0.0 < 0.0 is false
-0.0
является отрицательным, но не менее 0.0
Вы можете использовать
public static boolean isNegative(double d) {
return Double.compare(d, 0.0) < 0;
}
Более эффективным, если более тупые, версия для проверки бит.
public static boolean isNegative(double d) {
return Double.doubleToRawLongBits(d) < 0;
}
Примечание: в соответствии с IEEE-754 NaN может иметь тот же самый бит, что и отрицательный номер.
Я не занимаюсь этим, но это не может быть серьезным вопросом ... – dasblinkenlight
О единственном, о чем я могу думать, это если есть какой-то странный угловой случай с отрицательным 0, но все же ... –
Был действительно угол, который я должен был упомянуть в самом вопросе, и да, я согласен с тем, что мне следовало бы включить то, что я пробовал первым, так или иначе, если кто-то может удалить этот вопрос, тогда plz сделает так, как это не стоит иметь его здесь. – Rachel