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

Java 在除以整数时,Double始终返回0,java,int,double,division,Java,Int,Double,Division,有人能解释一下为什么这样不行吗?除chance之外的所有变量都是整数,而chance是双精度的。当我打印所有值时,它们绝对正确。。。但机会总是0.0。我知道这与将整数转换为双倍有关,因为我以前有过几次类似的问题。让它做你想做的事情的关键是什么 gladValue = (glad.dexterity+glad.tactical+weaponSkill); oppValue = (glad.target.dexterity+glad.target.tactical+glad.targ

有人能解释一下为什么这样不行吗?除chance之外的所有变量都是整数,而chance是双精度的。当我打印所有值时,它们绝对正确。。。但机会总是0.0。我知道这与将整数转换为双倍有关,因为我以前有过几次类似的问题。让它做你想做的事情的关键是什么

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

谢谢

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

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


如果按照我说的做,记住*和/具有相同的优先级,并且操作从左到右进行,那么在计算gladValue*10.0时,gladValue被提升为浮点,浮点结果被除以oppValue。

是从执行的第一个操作得到的交易类型吗?编辑:我看到你的编辑。非常感谢。