0%

求余和取模

今天写题的时候遇到了两个异号数进行%运算的情形,研究了一下才发现求余和取模是不一样的。

计算公式

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:取模