什么Java方法采用int并返回+1或-1?
什么Java方法采用int
并返回+1或-1? 对此的标准是int
是正还是负。 我仔细查看了文档,但是我很难读它,我找不到它。 我知道我已经在某个地方见过了。
Integer.signum(int i)
Math.signum(value)
将完成这个技巧,但由于它返回float或double(根据参数),你必须将它Math.signum(value)
:
int sign = (int)Math.signum(value);
编辑:刚刚检查过,从JDK 1.5你也直接:
Integer.signum(value);
严格评估为-1或1,并且比n < 0 ? -1: 1
更冷(也可能更有效) n < 0 ? -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的浮点值
返回:参数的signum函数
自:1.5
为了娱乐:
return (i > 0) ? 1 : ( (i < 0) ? -1 : 0 );