取余和取模

之前我的认知里一直以为取余和取模是一回事,直到那天他们在讨论关于这个,才意识到并不是这样,这里进行总结一下。

在数学里面,我们接触到的余数都是大于0的,但在编程中,就会存在有正有负的情况。编程中,这两种计算的机制不同,Mod采用fix函数,Rem采用floor函数,这两函数都是用来取整的,fix向0方向舍入,floor向无穷小方向舍入。
取模(Mod)和取余 (Rem)我们都是用 " % "来表示
首先,他们的区别是:

取余:向0方向舍弃小数位,遵循尽可能让商大的原则。
取模:向负无穷方向舍弃小数位,遵循尽可能让商小的原则。

在商和除数同号时,取模和取余 的结果是相同的。
看几个栗子:

取余 取模
3%2 1 1
-3%-2 -1 -1
-3%2 -1 1
3%-2 1 -1

总结:取余运算的结果正负性和除数保持一致,取模运算结果和被除数保持一致。

不同编译语言对应的"%"所代表的含义不同,

取模运算 python
取余运算 C/C++、C#、Java、Golang、PHP

因此在程序移植时我们要注意到这一点。

你可能感兴趣的:(编程之路)