簡體   English   中英

模數產生意外結果

[英]Modulo gives unexpected result

我在分子,分子和模上有一些問題。 7/3 = 2.3333333333給我1的模!! 一定有問題嗎? 我學習了非客觀的基礎課程,因此我的代碼很簡單,並且簡化了下面的代碼。 (某些行是瑞典語)

調用方法:

 // Anropar metod och presenterar beräkning av ett bråktal utifrån täljare och nämnare
int numerator = 7;
int denumerator = 3;
System.out.println("Bråkberäkning med täljare " + numerator + " och nämnare " + denumerator + " ger " + fraction(numerator,denumerator));

和方法:

// Metod för beräkning av bråktal utifrån täljare och nämnare
public static String fraction(int numerator, int denumerator) {
    // Beräkning
    int resultat1 = numerator / denumerator;
    int resultat2 = numerator % denumerator;
    return Integer.toString(resultat1) + " rest " + Integer.toString(resultat2);
}

3兩次進入7,剩下1。 答案應該是1。這就是模的含義

7模3給出1。由於7 = 2 * 3 + 1。

7 % 3 = 1

正如預期的那樣。 如果您想使用.3333 ,則可以取模,並用分母表示,得到1 / 3 = 0.3333

(7.0 / 3.0) % 1 = 0.3333

嗯7%3 = 1

您會期待什么?

給定兩個正數,a(被除數)和n(除數),模n(縮寫為mod n)可以看作是除以a的余數。 例如,表達式“ 5 mod 4”的計算結果為1,因為5除以4留下的余數為1;而“ 9 mod 3”的計算結果為0,因為9除以3的余數為0; 將3乘以3后再從9中減去任何值。(請注意,使用計算器進行除法操作不會向您顯示此操作所引用的結果,商將表示為小數。)當a或時n為負數,此幼稚的定義被破壞,並且編程語言在定義這些值的方式上有所不同。 盡管通常使用a和n都是整數來執行,但許多計算系統都允許使用其他類型的數字操作數。

更多信息: http : //en.wikipedia.org/wiki/Modulo_operation

你沒問問題!

如果您的問題只是:

“ ...給我1的模!!一定是錯誤的嗎?”

不,不是,7/3 = 2,並且取1的模。因為(3 * 2)+1 = 7。

整數的%不會給出小數部分,而是除法的余數。 這是從6開始的,它是最高的梅花2,比您的數字7低。7-6是1。

模運算符會提醒您除法。 因此,通常會得到數字1。

另外,請注意,您正在使用整數... 7/3 != 2.3333333333

最后一件事,請謹慎使用該代碼。 除以零會導致程序崩潰。 ;)

您正在使用整數操作數,因此您將獲得整數結果。 這就是語言的工作方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM