luc*_*smo 192
您可以使用模数运算符,但这可能很慢.如果它是一个整数,你可以这样做:
if ( (x & 1) == 0 ) { even... } else { odd... }
Run Code Online (Sandbox Code Playgroud)
这是因为低位将始终设置为奇数.
Rya*_*art 27
如果除以2时的余数为0,则为偶数.%得到剩余的是运营商.
fir*_*w52 20
每个偶数都可以被2整除,无论它是否为小数(但小数,如果存在,也必须是偶数).所以你可以使用%(modulo)运算符,它将左边的数字除以右边的数字并返回余数......
boolean isEven(double num) { return ((num % 2) == 0); }
Run Code Online (Sandbox Code Playgroud)
我会推荐
Java Puzzlers: Traps, Pitfalls, and Corner Cases 书籍 Joshua Bloch 和 Neal Gafter
有一个简单的解释如何检查数字是否为奇数。第一次尝试与@AseemYadav 尝试过的类似:
public static boolean isOdd(int i) {
return i % 2 == 1;
}
Run Code Online (Sandbox Code Playgroud)
但正如书中提到的:
当余数运算返回非零结果时,它的符号与其左操作数相同
所以一般当我们有负奇数然后代替1我们会得到-1的结果i%2。所以我们可以使用@Camilo 解决方案或只是这样做:
public static boolean isOdd(int i) {
return i % 2 != 0;
}
Run Code Online (Sandbox Code Playgroud)
但通常最快的解决方案是使用 AND 运算符,如上面写的@lucasmo:
public static boolean isOdd(int i) {
return (i & 1) != 0;
}
Run Code Online (Sandbox Code Playgroud)
@Edit 还值得指出的是Math.floorMod(int x, int y);,它可以很好地处理负的红利,但-1如果除数为负也可以返回