【问题标题】:correct way to find the result of modulo [duplicate]找到模数结果的正确方法[重复]
【发布时间】:2014-04-01 12:39:06
【问题描述】:

众所周知,modulo operation finds the remainder of division of one number by another

我正在努力找出获取模值的正确方法。

a mod b = c

如果 a >= 0,很容易找到 c。但是,如果 a

有一天,如果 -75 mod 26 = 3,我在我的讲师笔记中读到。

然后,我在java中创建了一个简单的程序来查找-75 mod 26的结果。程序编译并打印结果:-23。

那么,如果 a

以下是我尝试过的代码:

public class modulo {
    public static void main(String [] args){
        int divide = -75;  

        int val = divide % 26; 

        System.out.println(divide+" % 26 = "+ val);

    }
}

【问题讨论】:

  • 你能不能只做 mod abs(number) 然后把它变成负数
  • @Jeef:不,那也会给出-23。
  • int val = divide % 26; if (val < 0) val += 26;
  • @assylias,太好了!谢谢。

标签: java modulo number-theory


【解决方案1】:

为什么在除法之前你不能从两者中得到绝对值?

public class modulo {
    public static void main(String [] args){
        int divide = -75;  
        int val = Math.abs(divide) % Math.abs(26); 
        System.out.println(divide+" % 26 = "+ val);
    }
}

...或者只是从结果中获取 abs 值(四舍五入)?

Math.round( result );

【讨论】:

  • 简单的四舍五入会产生错误的结果。
  • 我刚刚提出了解决方案。对于适当的舍入,他可以搜索适当的实现(或自己编写)
  • 我的意思是abs(a % b) != abs(a) % abs(b)。后者在数学上是正确的,但前者不是。
猜你喜欢
  • 1970-01-01
  • 2019-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-20
  • 1970-01-01
  • 1970-01-01
  • 2015-08-17
相关资源
最近更新 更多