Какой метод Java принимает int и возвращает +1 или -1?

Какой метод Java занимает int и возвращает +1 или -1? Критерием для этого является ли int положительный или отрицательный. Я просмотрел документацию, но плохо читаю и не могу ее найти. Я знаю, что видел это где-то, хотя.

6 ответов

Решение

Integer.signum(int i)

Math.signum(value) будет делать трюк, но так как он возвращает float или double (согласно параметру), вам придется его разыграть:

int sign = (int)Math.signum(value);

или же:

Integer.signum(value);

Строго оценивая -1 или 1, и круче (вероятно, более эффективный), чем n < 0 ? -1: 1:

(n >> 31) | 1

Если вы хотите использовать его для long тоже:

(n >> 63) | 1

Использование Integer.signum(int i), но если вы хотите собственный встроенный бит кода:

int ans = i < 0 ? -1 : 1;

если вы также хотите 0:

int ans = i == 0 ? 0 : (i < 0 ? -1 : 1);

Math.signum(double i)

Возвращает функцию signum аргумента; ноль, если аргумент равен нулю, 1.0, если аргумент больше нуля, -1.0, если аргумент меньше нуля. Особые случаи:

  • Если аргумент NaNто результат NaN,
  • Если аргумент положительный ноль или отрицательный ноль, то результат совпадает с аргументом.

Параметры:

  • d - значение с плавающей запятой, знак которого должен быть возвращен

Возвращает: функция signum аргумента

С: 1.5

Ради забавы:

return (i > 0) ? 1 : ( (i < 0) ? -1 : 0 );
Другие вопросы по тегам