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