初原挽风
文章22
标签17
分类0

一言

文章归档

取模运算与取余运算的区别

取模运算与取余运算的区别

不同的编程语言中的 % 的含义也不一样,如 Python 是取模, Java 是取余。

注意:除数与被除数的符号相同的时候,两者结果一样

以下仅探讨两者符号不同时的区别(由于它们取商值不同,所导致的)

如果有两个整数 a 和 b ,则 a mod b ,需要满足 a = b * q + r ,q 为商, r 为结果

取模运算( mod )

取模是计算机中的概念

取模结果的符号与除数的符号相同

取模运算的商尽可能向负无穷靠近

1
2
3
4
# python 代码
num_1 = 5
num_2 = -2
print(num_1 % num_2) # 输出为 -1

过程解析:

  1. q = ⌊ num_1 / num_2 ⌋ 其中 ⌊ ⌋ 符号为向下取整 ,得出 q = -3
  2. 由 a = b * q + r , 得出 r = -1

取余运算( rem )

取余是数学中的概念

取余结果的符号与被除数的符号相同

取余运算的商尽可能向 0 靠近

1
2
3
4
5
6
7
public class Main {
public static void main(String[] args) {
int num_1 = 5;
int num_2 = -2;
System.out.println(num_1 % num_2); // 输出 1 (与被除数符号相同)
}
}

过程解析:

  1. q = ⌈ num_1 / num_2 ⌉ 其中 ⌈ ⌉ 符号为向上取整,得出 q = -2
  2. 由 a = b * q + r ,得出 r = 1

不同的编程语言中 % 有着不同含义:

取模 取余
Java C++ Kotlin PHP C Go SQL Python Lua Ruby
本文作者:初原挽风
本文链接:https://www.wanlu.fun/cb2c30c3.html
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可