java - 大的负模给出错误的结果

标签 java

我有一段代码可以对两个长数字进行取模。其中一个多头是负数,另一个则不是。给定 a = -5865797 和 b = 979667766,答案应该是 973801969。但它的结果是 -5865797,与变量 a 相同。不确定为什么会发生这种情况。

long a = -5865797;
long b = 979667766;

result = a % b;
System.out.println(result);

最佳答案

假设你有 3,你想把它除以 2。3 除以 2 的整数除法是 1。但是你无法进行干净的除法,所以有一个“剩余”,也称为除法的余数。模运算返回余数。

如果您现在尝试将 2 除以 3,则每部分将少于一个元素,这意味着 3 除以 2 的整数除法为 0,余数为 2。

您可以将其视为规则:每当您尝试将数字“a”除以大于“a”的数字“b”时,整数除法将是“0”,余数将是“a” 。这意味着如果你用“b”对“a”取模,你总是会得到“a”,这就是你的情况发生的情况。

关于不同的编程语言如何处理负操作数的信号,请查看下面的页面

https://en.wikipedia.org/wiki/Modulo_operation#In_programming_languages

顺便说一句,973801969 是 a + b (-5865797 + 979667766) 的结果。

关于java - 大的负模给出错误的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61812309/

相关文章:

java - 当我的accept-count=100000时,为什么会出现SocketTimeoutException?

java - 用 Jaxb 重复标签

java - junit 检测测试是否是唯一运行的一个

java - 在 Java 中创建列表的二维数组

java - 命名空间 : javax. xml.bind.UnmarshalException:意外元素

java - pom配置继承-maven Surefire插件

java - 用 Java 绘制头部和颈部。拉线问题

java - Spring 5 + hibernate 5 : How SessionFactory is getting Autowired with LocalSessionFactoryBean

java - 需要帮助将代码转换为使用字符串而不是整数

java - 如何在tapestry4中使用PageEvent发送重定向到另一个页面