首页 新闻 会员 周边 捐助

python 正数除以负数取余

0
悬赏园豆:10 [已解决问题] 解决于 2019-10-11 10:40

今天被女朋友一个问题问住了,python中:
print(9 % (-4))
结果为什么是“-3”,请教一下各位。

正态分个布的主页 正态分个布 | 初学一级 | 园豆:97
提问于:2019-07-22 13:55
< >
分享
最佳答案
0

因为9/4=2......1 当然是3呀。python不是四舍五入的吧

收获园豆:10
追随大智慧 | 菜鸟二级 |园豆:214 | 2019-07-22 15:56
其他回答(4)
0

好像不同的语言对负数mod运算规则不一样,楼主你问问你女朋友,然后公布下答案可否?

会长 | 园豆:12463 (专家六级) | 2019-07-22 17:12

不好意思,过了那么久才回。
我后来又问了几个人,最后总结出比较合理的解释如下:
9 % (-4) >>> 整数部分,为 -2,小数部分为-0.25,由于python语言对运算符的编译(由python开发者决定的),在计算机内存中,python的 “%”运算符,除不尽的会向前移位,比方说:如果结果是5.1,就会返回5,如果是 -5.1,就会编译成 -6,然后返回给你。

支持(0) 反对(0) 正态分个布 | 园豆:97 (初学一级) | 2019-10-11 10:36

@正态分个布: 楼主不愧是研究数学的

支持(0) 反对(0) 会长 | 园豆:12463 (专家六级) | 2019-10-11 10:58

@会长: 大佬过奖了,只是有点绕而已

支持(0) 反对(0) 正态分个布 | 园豆:97 (初学一级) | 2019-10-11 11:00
0

诚如“会长”所言

花飘水流兮 | 园豆:13617 (专家六级) | 2019-07-22 18:03

不好意思,过了那么久才回。
我后来又问了几个人,最后总结出比较合理的解释如下:
9 % (-4) >>> 整数部分,为 -2,小数部分为-0.25,由于python语言对运算符的编译(由python开发者决定的),在计算机内存中,python的 “%”运算符,除不尽的会向前移位,比方说:如果结果是5.1,就会返回5,如果是 -5.1,就会编译成 -6,然后返回给你。

支持(0) 反对(0) 正态分个布 | 园豆:97 (初学一级) | 2019-10-11 10:36
0

后来又问了几个人,最后总结出比较合理的解释如下:
9 % (-4) >>> 整数部分,为 -2,小数部分为-0.25,由于python语言对运算符的编译(由python开发者决定的),在计算机内存中,python的 “%”运算符,除不尽的会向前移位,比方说:如果结果是5.1,就会返回5,如果是 -5.1,就会编译成 -6,然后返回给你。

正态分个布 | 园豆:97 (初学一级) | 2019-10-11 10:37
0

楼主你这是python中向下取整“//”的操作吧,取余使用到这个操作,具体的应该是余数r = a - n[a//n],其中r是所要求的余数,a是被除数,你这个例子中就是“9”,而n就是除数,你这里为“-4”,又由于9//-4 = -3(本来应该是-2.25,但是向下取整后便是-3)所以余数r = 9-(-4)[9//-4] = 9-12=-3。

521hualong | 园豆:202 (菜鸟二级) | 2021-01-13 23:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册