python取模?C、java求余?-3%10在不同语言中结果不一样?一文弄清!

对整型变量a、b来说,求余运算和取模运算的公式都是:

1.求整数商:n=a/b;

2.计算余数或者模:y=a-n*b。

但是,两种运算在第一步时就产生了不同的结果,因为:求余运算在取n的值时,向0方向舍入;而取模运算在计算n的值时,向负无穷方向舍入。

接下来举例说明:-3%10

第一、在C、JAVA中:

-3%10=-3

python取模?C、java求余?-3%10在不同语言中结果不一样?一文弄清!_第1张图片

解释:如上图代码注释

附加:因为-3除以10等于-0.3,又因为C、JAVA中是向0方向舍入,所以整数商是0

python取模?C、java求余?-3%10在不同语言中结果不一样?一文弄清!_第2张图片

(上图是java的取整为0)

所以在C、JAVA中,-3%10=-3-(0)*10=-3

第二、在Python中:

-3%10=7

python取模?C、java求余?-3%10在不同语言中结果不一样?一文弄清!_第3张图片

解释:如上上图

附加:因为-3除以10等于-0.3,又因为python中是向负无穷方向舍入,所以整数商是-1

(以上图片是python的取整运算,为-1)

所以在python中-3%10=-3-(-1)*10=7

好的,接下来来归纳一下:

1a和b符号相同时,求余和取模结果相同;

2a和b符号不同时,求余结果的符号和a相同,取模结果的符号和b相同。

这里我还贴切说明一下:

1就是说在C、JAVA中,余数符号与被除数符号一致;

2在python中, 余数符号与除数符号一致。

另外不同语言环境下“%”运算符的含义也不同:

1c/c++、Java为求余

2Python为取模

另外一点小补充:

在数学上的取整方式是分为三类的哦:向上取整,向下取整,向零取整

1向上取整:向+∞方向取最接近精确值的整数。

在这种取整方式下,5 / 3 = 2, -5 / -3 = 2, -5 / 3 = -1, 5 / -3 = -1,-3 / 10 =0

2向下取整:向-∞方向取最接近精确值的整数。

在这种取整方式下,5 / 3 = 1, -5 / -3 = 1, -5 / 3 = -2, 5 / -3 = -2, -3 / 10 = -1

3向零取整:向0方向取最接近精确值的整数。

在这种取整方式下,5 / 3 = 1, -5 / -3 = 1, -5 / 3 = -1, 5 / -3 = -1,-3 / 10 =0

你可能感兴趣的:(计科知识,python,java,c语言,c++,学习方法)