首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模算子不能给出正确的结果

模算子不能给出正确的结果
EN

Stack Overflow用户
提问于 2013-12-18 12:29:12
回答 4查看 178关注 0票数 0

为什么java中的模运算符与wolfram不同?

我的公式是:

代码语言:javascript
复制
var = (var-x) % 10

例如,wolfram给出了正确的结果。

代码语言:javascript
复制
(0 - 1) % 10 = 9

Java给-1。

我怎么才能最好地解决这个问题呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-12-18 12:34:59

这就是定义%的方式,并且应该在大多数编程语言中工作,即使有时相反的情况也是有用的。

我建议实现您自己的模块化方法:

代码语言:javascript
复制
int positiveModulo(a, b) {
    int result = a % b;
    if (result < 0) { result += b; }
    return result;
}
票数 2
EN

Stack Overflow用户

发布于 2013-12-18 12:31:18

如果需要的话,我会为那个案子写我自己的国防部,比如

代码语言:javascript
复制
public int nonNegativeModOfDiff(int a, int b,int n) {
  int mod = (a-b)%n;
  return mod >= 0 ? mod : mod + n;
}
票数 1
EN

Stack Overflow用户

发布于 2013-12-18 12:33:55

这应该能起作用:

代码语言:javascript
复制
class ModTest {
    public static void main (String[] args) {
        int x = -1;
        int m = 10;
        int y = mod(x, m);

        System.out.println(y);
    }

    static int mod(int x, int m) {
        return (x % m + m) % m;
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20658248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档