日常编程经常会接触到取余/取模运算,那么计算机中取余/取模运算究竟是怎么定义的?
数学取整
1.1 向0取整
- parseInt() 注意接受参数是string;所以调用该方法时存在类型转换
-
- parseInt(3.141592654) // 3
1.2 向下取整
- Math.floor() 不四舍五入
-
- Math.floor(1.5555) // 1
1.3 向上取整
- Math.ceil() 向上取整
-
- Math.ceil(1.5555) // 2
- Math.ceil(1.1555) // 2
1.4 四舍五入取整
- Math.round() 四舍五入取整
-
- Math.round(1.5555) //2
- Math.round(1.4999) //1
取模概念
如果a和d是两个自然数,d非零,可以证明存在两个唯一的整数 q 和 r,满足
a = q*d + r 且 0 ≤ r < d
。其中,q 被称为商,r 被称为余数。
取整
取余:尽可能让商,进行向0取整。
取模:尽可能让商,向-∞方向取整。
C中 % ,本质其实是取余。
Python中 % ,本质其实是取模。
理解链:
对任何一个大于0的数,对其进行0向取整和-∞取整,取整方向是一致的。故取模等价于取余
对任何一个小于0的数,对其进行0向取整和-∞取整,取整方向是相反的。故取模不等价于取余
同符号数据相除,得到的商,一定是正数(正数vs正整数),即大于0!故,在对其商进行取整的时候,取模等价于取余。