今天写题的时候遇到了两个异号数进行%运算的情形,研究了一下才发现求余和取模是不一样的。
计算公式
A、B分别为被除数和除数。
当A可以被B整除时,二者结果都为0。
当A不可以被B整除时,令
求余和取模都是求满足条件的R。但二者差别在于:
求余:使商C尽可能向0靠近。
取模:使商C尽可能向负无穷靠近。
例子
取
考虑小数,则
取整后,产生了两个可能的商 2 和 3 。2 更靠近 0 ,也更靠近负无穷,因此无论求余还是取模,商都应该取 2 ,因此
当A、B都取其相反数时同理。可以看出,当被除数和除数同号时,求余和取模的结果是一致的。
若
考虑小数,则
取整后,产生了两个可能的商 -2 和 -3 。由于 -2 更靠近 0 ,-3 更靠近负无穷,因此求余时商将取 -2,而取模时商将取 -3 。
求余结果
取模结果
当A、B都取相反数时同理。可以看出,当除数和被除数异号,求余和取模结果不一致。
简单的记忆方式
求余:余数和被除数同号。
取模:余数和除数同号。
不同语言中的%
C、C++、Java:求余
Python:取模