A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


%左边如果小于右边结果为左边,相等结果为0
  1%-1结果为1  -1%5=-1
  如果出现负数就只看左边。
  如果右边是负数左边是正数并且右边的负数大于-1,不等于本身并且不超过本事的话都等于1
下面的这些是我自己写代码验证的。
  左边正数右边负数:
  大于负本身则等于本身  等于负本身等于零   任何正数负一等于零   负大于本身等于本身

  2323%-2324=2323      2323%-2323=0        2323%-1=0     2323%-2324=2323  
毕向东老师讲的是如果右边是负数只看左边问题就大了。

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

5 个回复

倒序浏览
回去敲敲看。。。
回复 使用道具 举报
如果右边是负数的话,负号可以忽略,只看左边。是这个意思吧
回复 使用道具 举报
lily15 发表于 2015-5-10 23:38
如果右边是负数的话,负号可以忽略,只看左边。是这个意思吧

视屏上是这么说的,不过测试后的结果是上面错误的。 你可以看清楚下面我测试的结果。
回复 使用道具 举报
lily15 发表于 2015-5-10 23:38
如果右边是负数的话,负号可以忽略,只看左边。是这个意思吧

额,刚刚我没有看清楚你说的,貌似差不多。 我在测试的时候把我搞蒙了。。。。
回复 使用道具 举报
本帖最后由 fantacyleo 于 2015-5-11 15:51 编辑

这种问题,看java language specification是最权威的了:
假设a % b = r,则
(1) r必须满足(a/b)*b+r == a
而a / b=q的规则是:
(1)在满足 |b * q| ≤ |a|的前提下,q的绝对值尽可能大
(2)如果|a|<|b|,则q=0;
(3)如果|a|>=|b|,则a和b同号时,q大于0,a和b异号时,q小于0

用以上规则分析几个例子:
-1 / -2 = 0  根据a/b的规则(2)
-1 / 2 = 0 根据a/b的规则(2)
1/-1=-1    根据a/b的规则(3),1/-1的值应该小于0,根据a/b的规则(1),只有-1满足,因此1/-1=-1
-1/1=-1    根据a/b的规则(3),1/-1的值应该小于0,根据a/b的规则(1),只有-1满足,因此-1/1=-1
-1 / -1 =1 根据a/b的规则(3),1/-1的值应该大于0,根据a/b的规则(1),只有1满足,因此-1/-1=1

1%-1=0 上面得到1/-1=-1,代入(a/b)*b+r == a,得到r=0
-1%2=-1 上面得到-1/2=0,代入(a/b)*b+r == a,得到r=-1
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马