除以整数时,Double始终返回0

时间:2013-06-22 19:54:28

标签: java int double division

有人会介意解释为什么这不起作用?除偶然性之外的所有变量都是整数,而机会是双重的。当我打印所有值时,它们肯定是正确的......但总有机会出现0.0。我知道这与将整数转换为双打有关,因为我之前曾经遇到过这样的问题。让它做你想做的事情的关键是什么?

    gladValue = (glad.dexterity+glad.tactical+weaponSkill);
    oppValue = (glad.target.dexterity+glad.target.tactical+glad.target.agility);
    chance = (gladValue/oppValue)*10.0;

由于

1 个答案:

答案 0 :(得分:3)

您应该改为编写gladValue * 10.0 / oppValue

原因很微妙。括号表示首先计算gladValue / oppValue。但是这些变量是整数,因此结果是整数,因此您将丢失分数部分。只有当它乘以10.0时才会升级为双倍;但到那时已经太晚了。

如果按照我说的那样做,请注意*和/具有相同的优先级并且操作从左到右发生,然后在计算gladValue * 10.0时,gladValue被提升为浮点并且浮点结果被划分通过oppValue。