【问题标题】:Why is 4 % -8 equal to 4? [duplicate]为什么 4 % -8 等于 4? [复制]
【发布时间】:2021-02-14 11:27:41
【问题描述】:

在 Java 中,

4 % -8

输出 4 而不是

-4

如我所料。

【问题讨论】:

    标签: java modulus


    【解决方案1】:

    这在Java language specification section 15.17.3中有详细介绍。

    二进制数值提升(第 5.6 节)后整数操作数的余数运算产生一个结果值,使得 (a/b)*b+(a%b) 等于 a。

    即使在被除数是其类型的最大可能幅度的负整数并且除数是-1(余数是0)的特殊情况下,这个恒等式也成立。

    从这个规则可以看出,余数运算的结果只有当被除数为负时才能为负,只有当被除数为正时才能为正。而且,结果的大小总是小于除数的大小。

    因此,例如,-4 % 8 确实是 -4,但由于 4/-800 * -8 == 0,余数 4 % -8 必须是 4。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-28
      • 2013-02-05
      • 2013-02-27
      • 2011-04-24
      • 1970-01-01
      • 1970-01-01
      • 2017-02-20
      相关资源
      最近更新 更多