我是否忘记了一些关于模运算符的非常基本的东西



下面的代码有问题吗?

public class testing111 {
   public static void main(String[] args) {
      int t = 0;
      System.out.println((t-5)%360);      
  }
}

我上面的代码输出 -5。我以为答案应该是355,我什至检查了wolframalpha:http://www.wolframalpha.com/input/?i=%280-5%29%25360

是什么原因导致它这样做?

谢谢!

看起来 WolframAlpha 和 Java 在这里的行为不同。

在 Java 中,您可以从模运算符获得负结果。想想"如果我将 -5 除以 360 并取其余数",因为 -5/360 是 0,你只剩下根本无法除以的 -5。所以Java的结果是-5。

如果你想要 WolframAlpha 产生的答案,如果取模运算符的结果小于 0,你应该添加 360。

最新更新