谜题1:奇数性

isOdd方法用来判断输入参数i是否为奇数,结果会怎样呢?

public static boolean isOdd(int i){
  return i % 2 == 1;
}

考察的是%(取余)运算符的使用,该操作符被定义为对于所
有的 int 数值 a 和所有的非零 int 数值 b,都满足下面的恒等式:
(a / b) * b + (a % b) == a ;

当isOdd方法传入的参数是负奇数时,返回依然是FALSE,但负奇数也是奇数,因此上述代码存在缺陷,因此在使用时,通常改为如下更符合该操作符的定义:

public static boolean isOdd(int i){
  return i % 2 != 0;
}

另外取余和取模还有很多不同之处

取余:rem(5,2) = 1

    rem(5,-2) = 1

       rem(-5,2) = -1

       rem(-5,-2) = -1

取模:mod(5,2) = 1

    mod(5,-2) = -1

       mod(-5,2) = 1

       mod(-5,-2) = -1

综上来看二者却有不同,取余结果的正负与被除数相同,取模结果的正负与除数相同

还有当是浮点型时,先四舍五入再取余

例如:17%5.6 = 5;

还有一种情况例如:10%13 = 10;

-----------------------------------------------------------------

仔细研究发现一个小小运算符都如此的奇妙。。

posted @ 2017-02-04 18:08  Gypsophilamy  阅读(133)  评论(0编辑  收藏  举报