Java整数除法结果为双精度?

Java整数除法结果为双精度?,java,integer-division,Java,Integer Division,我目前有以下代码: int kills = 1; int deaths = 2; double kdr = 0; if(kills > 0 && deaths == 0) { kdr = kills; } else if(kills > 0 && deaths > 0){ kdr = kills/deaths; } System.out.println(

我目前有以下代码:

    int kills = 1;
    int deaths = 2;

    double kdr = 0;

    if(kills > 0 && deaths == 0) {
        kdr = kills;
    } else if(kills > 0 && deaths > 0){
        kdr = kills/deaths;
    }

    System.out.println(kdr);
你可以测试一下


为什么输出为0.00而不是0.5?

如果
杀死/死亡
<1,您会得到
0
,因为整数除法的输出是整数。然后将该
0
转换为
0.0
,以适应存储它的
double
变量

为了获得非整数结果,必须将其中一个数字转换为双精度:

 kdr = (double)kills/deaths;

如果
杀死/死亡
<1,则得到
0
,因为整数除法的输出是整数。然后将该
0
转换为
0.0
,以适应存储它的
double
变量

为了获得非整数结果,必须将其中一个数字转换为双精度:

 kdr = (double)kills/deaths;

因为您的输入值是整数。如果你将其中一个抛给另一个,你会得到预期的结果:

 kdr = (double)kills/deaths;

因为您的输入值是整数。如果你将其中一个抛给另一个,你会得到预期的结果:

 kdr = (double)kills/deaths;

这是许多东西的复制品。仅仅因为将操作结果分配给
double
并不能使操作本身使用
double
算法执行……这是许多事情的重复。仅仅因为您将操作结果分配给
double
,并不会使操作本身使用
double
算法执行……谢谢。我应该试一下,我只是假设在一个double下除法不需要强制转换。@ThatGuy343您的除法是对两个整数执行的,因此结果是整数,只有结果被强制转换为double,以适合kdr变量。谢谢。我应该试一下,我只是假设在一个double下除法不需要强制转换。@ThatGuy343您的除法是对两个整数执行的,因此结果是整数,并且只有结果被强制转换为double,以适合kdr变量。