日期:2014-05-20  浏览次数:20720 次

x mod y的确切定义
最近看TAOCP,里面定义对于任意实数 x mod y = x - y∟x/y」, (∟x/y」代表的含义是最接近且小于等于x/y的整数),
可是看computerProgram那本书,里面说当x>0,y<0时,整数除法x/y的结果应该是「x/y,这样的话x mod y = x - y「x/y,
之后用C和JAVA做实验,-7 mod 2 = -1,确实如此,但是按照TAOCP书中的定义 -7 mod 2 = 1。有人知道是怎么回事么

------解决方案--------------------
按照TAOCP的定义,也是-1啊。-7 mod 2= -7-2*(-3)=-7+6=-1.
------解决方案--------------------
我记得《java解惑》一书对java的mod有详细说明
------解决方案--------------------
C的标准是。

a%b 为 a/b的余数。

a%b = a - a/b * b

余数的结果,跟a的符号一致。
------解决方案--------------------
去余数,余数的符号跟被除数的符号一致!!