转载:
https://www.cnblogs.com/widerg/p/7208041.html
https://blog.csdn.net/u013094181/article/details/21863491
1.取模运算
(1)全都是正数,全都是负数情况
7%2=1,
(-7)%(-2)=-1
没有争论,比较好理解
(2)一正一负情况
如a%b,
第一种情况:a>0,b<0,如
-7%3=?
第二种情况:a<0,b>0,如
7%(-3)=?
这种情况怎么处理呢?
说明:
除法的取整分为三类:向上取整、向下取整、向零取整。
1.向上取整:向+∞方向取最接近精确值的整数。
在这种取整方式下,7/4=2,7/(-4)=-1,6/3=2,6/(-3)=-2
2.向下取整:向-∞方向取最接近精确值的整数。
在这种取整方式下,7/4=1,7/(-4)=-2,6/3=2,6/(-3)=-2
3.向零取整:向0方向取最接近精确值的整数,换言之就是舍去小数部分,因此又称截断取整。
查阅相关文章,得出c/c++和java采用的是向零取整的模式,而Python等其他语言大都采用其他两种方式非向零取整模式
所以对于c/c++
-7%3=-1
7%(-3)=1
总结:
1.对于任何同号的两个整数,其取余结果没有争议,所有语言的运算原则都是使商尽可能小。
对于异号即一正一负的的两个整数,C++/Java的原则是使商趋向于0,很多新型语言和网页计算器的原则是使商远离0,确定了商,取余结果自然就得出了
2.一正一负时,结果符号可以参考除数和被除数决定,即商与除数的乘积等于被除数符号一致来确定