发布网友 发布时间:2022-04-23 22:44
共4个回答
热心网友 时间:2023-07-09 00:46
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。
热心网友 时间:2023-07-09 00:47
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。
热心网友 时间:2023-07-09 00:47
36%-5
结果是-4
热心网友 时间:2023-07-09 00:48
百度“编程语言中负数取余的问题”