有哪个Java方法接受一个int
并返回+1或-1? 这个方法的标准是该int
是否为正或负。 我查看了文档,但我不擅长阅读它,找不到它。 我知道我在某个地方看到过它。
有哪个Java方法接受一个int
并返回+1或-1? 这个方法的标准是该int
是否为正或负。 我查看了文档,但我不擅长阅读它,找不到它。 我知道我在某个地方看到过它。
Math.signum(value)
可以解决问题,但由于它返回浮点数或双精度浮点数(根据参数),所以您需要进行强制转换:
int sign = (int)Math.signum(value);
或者:
Integer.signum(value);
严格评估为-1或1,并且比n < 0 ? -1: 1
更酷(可能更有效):
(n >> 31) | 1
如果您也想将其用于long
类型:
(n >> 63) | 1
Math.signum(double i)
返回参数的符号函数;如果参数为零,则返回零,如果参数大于零,则返回1.0,如果参数小于零,则返回-1.0。 特殊情况:
NaN
,则结果为NaN
。参数:
返回:参数的符号函数
自:1.5
使用 Integer.signum(int i)
,但如果你想要一个自定义的内联代码段:
int ans = i < 0 ? -1 : 1;
如果你也想要0:
int ans = i == 0 ? 0 : (i < 0 ? -1 : 1);
int ans
。 - defectivehalt只是为了好玩:
return (i > 0) ? 1 : ( (i < 0) ? -1 : 0 );