5 % 2 = 1
but it isn’t so obvious that:
5 % -2 = -1
and
-5 % 2 = -1
This can have an effect on your code; take the following:
private static boolean isOdd(int val) {
return (val % 2) == 1;
}
you may think that this code will determine whether or not a number is odd or not: well it does for at least 75% of the time. It will fail; however, when trying to figure out whether or not a negative odd number is odd as all negative arguments will return false irrepective of value.
The fix is very straight forward: don’t test for a remainder value, test for a non-zero value:
private static boolean isOddFixed(int val) {
return (val % 2) != 0;
}
No comments:
Post a comment