900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Python 关于整除以及负数取余遇到的问题

Python 关于整除以及负数取余遇到的问题

时间:2022-09-02 23:53:11

相关推荐

Python 关于整除以及负数取余遇到的问题

最近在编码的过程中,在整除以及取余的时候遇到了一些比较迷的问题,这里码一下这些问题,以备日后查看。

在Python3中,除法有 “/” 以及 “//” 两种,这两个有着明显的区别,具体区别看代码:

print(12//10)print(12/10)

这两行代码的输出如下:

11.2

这结果的差别显而易见。当被除数是负数的时候又是令一种情况:

print(-12/10)print(int(-12/10))print(-13//10)

这三条语句的输出为:

-1.2-1-2

这里面就可以发现-13用 “//” 除以10的时候,结果是-2,从结果中我们可以看出,“//”是向下取整,“-1.3”会被取成-2,如果想要得到-1,就需要用“/”,然后将结果强制转换为int型。

再讲到取余操作,比除法操作更为复杂。

正数的取余比较直接:

print(123%10)

这里结果为3。

但是换为负数取余,情况就有所不同:

print(-123%10)print(-123%-10)

7-3

这里面第二条是我们一般意义上的取余操作。这里也特别标注一下,如果涉及到负数取余要用上述解决办法。

那么我们看第一条,结果等于7。这个结果有点让人摸不到头脑,不过这个结果与Python的底层机制有关。

在Python中,取余的计算公式与别的语言并没有什么区别:r=a-n*[a//n]

这里r是余数,a是被除数,n是除数。

不过在“a//n”这一步,当a是负数的时候,我们上面说了,会向下取整,也就是说向负无穷方向取整。这也就得到:

-123%10 = -123 - 10 * (-123 // 10) = -123 - 10 * (-13) = 7

这里还不得不提的是

print(123%-10)

这个情况,结果为:

-7

这个通过公式我们也能清楚地计算出来。

下面列一下各种情况的一个总结:

print(18//10)print(12/10)print(-12/10)print(12/-10)print(12//-10)print(int(-12/10))print(-13//10)print(int(-123 % -10))print(-123%10)print(-123%-10)print(123%10)print(-123 // 10)print(123%-10)

11.2-1.2-1.2-2-1-2-37-33-13-7

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。