[英]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都是整数来执行,但许多计算系统都允许使用其他类型的数字操作数。
你没问问题!
如果您的问题只是:
“ ...给我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.