2014-04-01 87 views
2

的結果正如我們都知道,modulo operation finds the remainder of division of one number by another正確的方式找到模

我在努力找出獲得模數值的正確方法。

國防部B = C

可以很容易地找到c。如果A> = 0。但是,如果一個< 0,它混淆了我。

有一天,我在我的講師筆記閱讀,如果國防部-75 = 26 3

然後,我在Java中創建一個簡單的程序來找到-75國防部26計劃的結果彙總,並打印結果:-23。

那麼,什麼是正確的方式來找到c如果< 0?

初級講座是代碼,我已經試過:

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

     int val = divide % 26; 

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

    } 
} 
+0

難道你不只是做MOD ABS(號碼),然後重新使它消極 – Jeef

+0

@Jeef:不,這也會給-23。 –

+2

'int val = divide%26;如果(val <0)val + = 26;' – assylias

回答

0

你爲什麼不從兩個分裂之前得到絕對值?

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); 
    } 
} 

...或簡單地從結果中獲得絕對值(舍入)?

Math.round(result); 
+1

簡單地舍入結果會產生錯誤的結果。 – assylias

+0

我剛剛提出瞭解決方案。爲了正確舍入,他可以搜索正確的實現(或自己寫) –

+0

我在說的是:abs(a%b)!= abs(a)%abs(b)'。後者在數學上是正確的,但前者不是。 – assylias