今天被女朋友一个问题问住了,python中:
print(9 % (-4))
结果为什么是“-3”,请教一下各位。
因为9/4=2......1 当然是3呀。python不是四舍五入的吧
好像不同的语言对负数mod运算规则不一样,楼主你问问你女朋友,然后公布下答案可否?
不好意思,过了那么久才回。
我后来又问了几个人,最后总结出比较合理的解释如下:
9 % (-4) >>> 整数部分,为 -2,小数部分为-0.25,由于python语言对运算符的编译(由python开发者决定的),在计算机内存中,python的 “%”运算符,除不尽的会向前移位,比方说:如果结果是5.1,就会返回5,如果是 -5.1,就会编译成 -6,然后返回给你。
@正态分个布: 楼主不愧是研究数学的
@会长: 大佬过奖了,只是有点绕而已
诚如“会长”所言
不好意思,过了那么久才回。
我后来又问了几个人,最后总结出比较合理的解释如下:
9 % (-4) >>> 整数部分,为 -2,小数部分为-0.25,由于python语言对运算符的编译(由python开发者决定的),在计算机内存中,python的 “%”运算符,除不尽的会向前移位,比方说:如果结果是5.1,就会返回5,如果是 -5.1,就会编译成 -6,然后返回给你。
后来又问了几个人,最后总结出比较合理的解释如下:
9 % (-4) >>> 整数部分,为 -2,小数部分为-0.25,由于python语言对运算符的编译(由python开发者决定的),在计算机内存中,python的 “%”运算符,除不尽的会向前移位,比方说:如果结果是5.1,就会返回5,如果是 -5.1,就会编译成 -6,然后返回给你。
楼主你这是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。