本帖最后由 frank55555 于 2011-12-2 21:39 编辑
可以反过来想一下,结果必须和除数的正负号相同,则被除数就等于除数乖以 N 倍再加上 余数.上面的 MOD(-2,3) 则是3*N + 结果(这里的结果只能是小于3大于0的数,一是因为是余数所以要小于3.二是要符号要与除数相同所以要大于0),则能满足这二个条件的只能是:3*(-1)+1=被除数 -2.
也可以这样认为:如果第二参数为正数则被除数减去最接近它且小于它的除数倍数,如果第二参数为负数,则被除数减去最接近它且大于它的除数倍数.
上面的例子
MOD(-2,3)等于-2减去{...,9,6,3,0,-3,-6,-9,...}这里面最接近它且小于它的数{-3}等于 1 . (因为结果要为正,所以减去小的就为正)
MOD(2,-3)等于 2 减去{...,9,6,3,0,-3,-6,-9,...}这里面最接近它且大于它的数{3}等于 -1. (因为结果要为负,所以减去大的就为负)
个为认为,余数,是小于除数的,可以为正数,也可以为负数,所以5除以3 可以余2 也可以余-1.为了区分这二种不同的余数情况才用除来的符号来确定余数的符号.打个比方 A 到 B那儿去买东西,东西价值3元,A只有10元的整钱,B也没有零钱.这时可以A 买 3个东西,多一元钱(B欠A一元).也可以A买 4个东西,差2元(A欠B 二元).
|