在C语言中,负数除法运算与正数除法运算不一样,遵循原则有:
a/b 分子分母的符号,相同为正,相异为负
a%b 结果取分子(a)的符号,即与被除数(a)符号相同
eg : -3/16 = 0 ; 16/-3 = -5;
-3%16 = -3 ; 16%-3 = 1;
在数学公式中,c语言和Python的表示算法都是一样的:
r=a-n*[a/n]
以上,r是余数,a是被除数,n是除数。
唯一不同点,就是商向0或负无穷方向取整的选择:
c从c99开始规定向0取整
python则规定向负无穷取整
向零取值的含义是:
9/7=1 .29 —-向0取值–> 1
-9/7=-1.29—-向0取值–> -1
向负无穷取值的含义是:
9/7=1 .2 9—-向0取值–> 1
-9/7=-1.29—-向0取值–> -2
所以套用上述公式为:
C 语言:(a%n的符号与a相同)
-9%7=-9 – 7*[-1]= -2;
9%-7=9 – -7*[-1]= 2;
Python :(a%n的符号与n相同)
-9%7=-9 – 7*[-2]= 5
9%-7=-9 – -7*[-2]= -5
版权声明:本文为violette416原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。