python中36%-5为什么等于-1?

如题所述

36%-5根本就不等于-1,36%-5等于-4好吧?

下图是验证:

为什么36%-5等于-4?

因为%是求余数,余数=被除数-被除数//除数*除数。

而//是整除,对于python语言//是向下取整,即向负无穷大方向取整,结果是不大于商的最大整数。

36除以-5的商是-7.2,不大于-7.2的最大整数是-8,所以36//-5等于-8。

所以36%-5=36-(36//-5)*(-5)=36-(-8)*(-5)=36-40=-4。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-10-17

python中36%-5等于-4吧

36/-5=-7......1或-8......-4

由于python语言对运算符的编译(由python开发者决定的),在计算机内存中,python的 “//”运算符,除不尽的会向前移位,比方说:如果结果是5.1,就会返回5,如果是 -5.1,就会编译成 -6,然后返回给你。

python 中36//-5返回的是-8

所以36%-5取商为-8时的余数

补充

自然数取余定义分为两种:

1)定义1:如果a和d是两个自然数,d非零,可以证明存在两个唯一的整数 q 和 r,满足a=qd+r且0 ≤ r < d(其中q为商,r为余数)。定义1一般作为数学中的取余法则,即两个数取余,余数总是为正数。举例:5%3=3x1+2,商为1,余数为2(-5)%(-3)=(-3)x2+1,商为2,余数为15%(-3)=(-3)x(-1)+2,商为-1,余数为2(-5)%3=3x(-2)+1,商为-2,余数为12)

定义2:如果a 与d 是整数,d 非零,那么余数 r 满足这样的关系:a = qd + r , q 为整数,且0 ≤ |r| < |d|。定义2取余的结果就会导致出现两个余数了,比如5%(-3) = (-3)x(-1)+2 = (-3)x(-2)-1,所以这里的余数2和-1都满足定义。我们把2称为正余数,-1成为负余数。通常,当除以d 时,如果正余数为r1,负余数为r2,那么有r1 = r2 + d。所有语言和计算器都遵循了尽量让商尽量靠近0的原则,即5%(-3) 的结果为2而不是-1,(-5)%3的结果是-2而不是1。

第2个回答  2020-10-16

36%-5

结果是-4

第3个回答  2020-10-16
百度“编程语言中负数取余的问题”
相似回答