Java 整数除法及其赋值
可以理解的是:Java 整数除法及其赋值,java,floating-point,integer,double,Java,Floating Point,Integer,Double,可以理解的是: public int divide() { return 23/4; /* gives 5 , implicitly typecasting 5.75 to 5 ,due to 23 and 4 being both integers ,at least I think this is */ } 而且 public double divide() { return 23.0/4.0; /*gives 5.75 , sinc
public int divide() {
return 23/4; /* gives 5 , implicitly typecasting 5.75 to 5 ,due to 23 and 4 being
both integers ,at least I think this is */
}
而且
public double divide() {
return 23.0/4.0; /*gives 5.75 , since it takes 23.0 and 4.0 to be float and not int*/
}
我有一个密码:
public double divide() {
double intger = 23/4;
return intger;
}
在它里面,为什么即使我把23/4分配给一个双精度,我得到的只是5.0?另外,请检查我是否正确理解前两个
谢谢
编辑:
我得到了答案。感谢所有帮助过的人。
23/4
是一个int,然后隐式转换为double
编辑:试试这个
System.out.println(23/4);
System.out.println((double)(23/4));
System.out.println((double)23/(double)4);
int/int=int
因此您将一个整数分配给了一个双精度整数。首先,你应该得到一个双倍的值
试试这个:
public double divide() {
double toret = 23/4.0;
return toret;
}
表达式
23/4
是整数除法,并给出integer
结果
因此它的计算结果为5,然后分配给您的double
double integer=23/4
逐步:
double intger = 23.0 / 4.0;
23/4是一个整数。。
您已在两个整数之间执行除法,因此结果是一个整数。5,它存储为double5.0
如果希望获得返回的双精度值,请使用:
public double divide() {
double intger = 23.0/4.0;
return intger;
}
在第一个例子中,23/4返回5,因为整数除法就是这样做的:p/q返回最大的整数i,这样i*q哦,23/4得到5,然后转换为5.0??让我猜一下输出,第一个给出5,第二个给出5.0,第三个给出5.75。我得到了正确的结果吗?那么,为什么返回5.75,因为int/double或double/int返回一个双精度值。我从来不知道这件事,可能是因为第二个int隐式地将类型转换为double?如果其中一个是双精度值,它将返回一个双精度值,因为可以将整数值赋给双精度值。但是,您不能将double指定给整数,您应该将其强制转换。这意味着5.0被指定为double。谢谢。您真的很有帮助。谢谢。哦,我不知道已经存在一个问题。
public double divide(int p, int q) {
return (double)p/q;
}