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

逐步:

  • 23/4-整数除法,因为两个参数都是int;结果是5
  • 双积分=5;需要进行转换,因为左值是双精度的,而右值是整数;int到double的转换可以是隐式的;所以intger=5.0
  • 如果要进行浮点分割-只需分割浮点:

      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;
    }