什么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 );