为什么modulo运算符在C和Java中无法正常工作?为什么在Java和C中-1%26 = -1,为什么它在Python中是25?
3
A
回答
3
Python的%-operator计算数学余数,而不是模数。其余部分根据定义是0和除数之间的数字,它不依赖于像模数那样的红利符号。
+0
其实,你已经把它落后了,如果y是正数,那么“x mod y”将会在0和y-1之间,而“x余数y”的符号将取决于x的符号。我想不出任何我曾经对负数使用“%”运算符的情况,并且想要其余的,但很长一段时间,标准只强制要求具有正操作数的“%”的特定行为;在这些情况下,“mod”和“余数”是同义词,“mod”更容易表达,所以这就是卡住的名字。 – supercat 2014-09-26 19:05:47
0
不确定python,但%
java中的运算符返回除法后得到的余数。
-1%26
它分解:
26)-1(0
0
---
-1 ---> Remainder as (-1+0=-1)
1
按规定这是工作。
的契约是
a == (a/b) * b + (a % b)
和整数除法朝向零截断。因此,如果派息为负,则会得到负值余额。
4
Wikipedia有一个不错的表格,它显示了各种语言的操作符号。在Python中,它是除数的标志(26),在Java/C中是分红的标志(-1)。
剩余量与模量 – Doorknob 2013-03-22 18:14:25
非常感谢大家!它真的帮了大忙! – DDC 2013-03-22 18:28:42
我更喜欢余下的版本,但是在java中,设计决定是以不同的方式进行的:-( – MrSmith42 2013-03-22 18:38:46