Java整数除法结果为double? [复制]

Posted

技术标签:

【中文标题】Java整数除法结果为double? [复制]【英文标题】:Java integer division result as double? [duplicate] 【发布时间】:2014-11-12 07:25:13 【问题描述】:

我目前有这个代码:

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

你可以测试一下here。

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

【问题讨论】:

这是很多东西的复制品。仅仅因为您将操作的结果分配给 double 并不会使操作本身使用 double 算术执行... 【参考方案1】:

如果kills/deaths 0,因为整数除法的输出是整数。然后将此0 强制转换为0.0 以适应您存储它的double 变量。

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

 kdr = (double)kills/deaths;

【讨论】:

谢谢。我应该尝试过,我只是假设在双精度下除法不需要演员。 @ThatGuy343 您的除法是对两个整数执行的,因此结果为整数,并且只有结果被强制转换为双精度,以适应您的 kdr 变量。【参考方案2】:

因为您的输入值是整数。如果你将它们转换成双倍,你会得到预期的结果:

 kdr = (double)kills/deaths;

【讨论】:

以上是关于Java整数除法结果为double? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

假设分母<>0,整数除法是不是会溢出/下溢? [复制]

java做除法运算,为啥除不开时也会得到整数呢

如何在整数算术中执行上限除法? [复制]

如何在Android中将double转换为int? [复制]

在 C# 中检查 double 是不是为整数的好方法是啥? [复制]

整数除法('Int' 不能转换为 'Double')