您的位置 首页 java

Java 中的取模和取余

Java 中的取余运算(Complementation)是 % ,而 取模运算 (Modulo Operation)是 Math.floorMod() ,取余和取模并不一致。

– 计算方法
对于整数 a,b 来说,取模运算和取余运算的过程相同:

  1. 求整数商:c=a/b
  2. 计算 或者余数:r=a−c×b

只是取模和取余在第一步求商的方法上有所不同:取余运算在取 c 的值时,向 0 方向舍入( fix() 函数);而取模运算在计算 c 的值时,向负无穷方向舍入( floor() 函数)。

– 代码例子

     int a = 7, b = 4;
    System.out.println(String.format("%d %% %d = %d, %d mod %d = %d", a, b, a % b, a, b, Math.floorMod(a, b)));
    a = -7;
    System.out.println(String.format("%d %% %d = %d, %d mod %d = %d", a, b, a % b, a, b, Math.floorMod(a, b)));
    a = 7;
    b = -4;
    System.out.println(String.format("%d %% %d = %d, %d mod %d = %d", a, b, a % b, a, b, Math.floorMod(a, b)));
    a = -7;
    b = -4;
    System.out.println(String.format("%d %% %d = %d, %d mod %d = %d", a, b, a % b, a, b, Math.floorMod(a, b)));  

输出如下:

 7 % 4 = 3, 7 mod 4 = 3
-7 % 4 = -3, -7 mod 4 = 1
7 % -4 = 3, 7 mod -4 = -1
-7 % -4 = -3, -7 mod -4 = -3  

可以得出结论:

a mod b: 取模运算结果的符号和 b 一致,
a % b: 取余运算结果的符号和 a 一致。

Java 中的取模和取余

注:C 和 C++ 中的 % 也为取余, Python 中的 % 为取模。

参考资料:

文章来源:智云一二三科技

文章标题:Java 中的取模和取余

文章地址:https://www.zhihuclub.com/191352.shtml

关于作者: 智云科技

热门文章

网站地图