在python中,除法有/ 和 // 两种,有着明显的区别,例子如下:
|
|
可以看出来,在py2中,无论用哪种方式,结果都是向下取整的,比如 -1.1 会向下取整为 -2, 而在py3中,只有”//“才会向下取整。
再说说取余操作,正数的取余操作没有问题,换成负数取余情况就诡异了,例子如下:
|
|
为什么 -16 % 10会等于4呢,这里和python的底层机制有关,在python中
余数 R = a-n*[a//n],其中R是余数,a是被除数,n是除数
在 a // n 这一步,当a是负数时,会向下取整,这也就得到 -16 - 10 *(-16//10)= 4