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变量。