Modulo给出了意想不到的结果

时间:2011-10-09 15:08:06

标签: java

我对分子,分析器和模数有一些问题。 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);
}

8 个答案:

答案 0 :(得分:7)

3进入7,两次,剩下1。答案应该是1.这就是modulo means

答案 1 :(得分:1)

7 modulo 3给出1.因为7 = 2 * 3 + 1。

答案 2 :(得分:1)

7 % 3 = 1

正如预期的那样。如果您想要.3333,您可以使用模数并将其除以分母以获得1 / 3 = 0.3333

(7.0 / 3.0) % 1 = 0.3333

答案 3 :(得分:0)

Ehm 7%3 = 1

你会期待什么?

给定两个正数,a(被除数)和n(除数),模n(缩写为mod n)可以被认为是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

答案 4 :(得分:0)

你没有提出问题!

如果你的问题只是:

" ...给我一个1的模数!?一定是错的吗?"

不,它不是,7/3 = 2,模数为1.由于(3 * 2)+ 1 = 7。

答案 5 :(得分:0)

对于整数,

%不给出小数部分,而是给出除法的余数。这是从6开始,这是2的最高乘数低于你的数字7. 7-6是1。

答案 6 :(得分:0)

模数运算符会给你一个除法的提醒。因此,结果是1号是正常的。

另请注意,您使用的是整数... 7/3 != 2.3333333333

最后一件事,小心那段代码。除零将使您的程序崩溃。 ;)

答案 7 :(得分:0)

您正在使用整数操作数,因此您将获得整数结果。这就是语言的运作方式。