Java 为什么我们在第二个println上得到1作为余数?
因为整数不是实数,所以答案是1,余数的实数部分被忽略,因为您将Java 为什么我们在第二个println上得到1作为余数?,java,coding-style,modulus,Java,Coding Style,Modulus,因为整数不是实数,所以答案是1,余数的实数部分被忽略,因为您将i定义为整数这是Java用来生成其操作数余数的公式: package PracticePackage; public class whileLoop { public static void main(String[] args) { int i=1; System.out.println("Quotient "+i/2); System.out.println(
i
定义为整数这是Java用来生成其操作数余数的公式:
package PracticePackage;
public class whileLoop {
public static void main(String[] args) {
int i=1;
System.out.println("Quotient "+i/2);
System.out.println("Remainder "+i%2);
}
}
其中,a
是被除数,b
是除数
所以在你的情况下,它就像:
(a/b)*b+(a%b)
因此结果是1
而不是0
1/2=0.5
您将i
定义为int
如果答案是实数,java中的整数除法将占据答案的底部,因此1/2变为0,使1%2等于1
我希望这能解释清楚。你能更详细地解释一下你的问题吗?不清楚您实际想要什么,也不清楚显示的代码为什么不能满足您的需要。您得到1是因为
1%2==1
。你期望的是什么?我期望的是0。它是如何变成1的?请解释一下,好的。但余数是0,零是实的。为什么0不是输出?我很困惑。0也是一个整数。余数是1,因为1+(0*2)=1
int i = 1;
int b = 2;
int result = (i / b) * b + (i % b);