-3

有人介意解释为什么这不起作用吗?除了机会之外的所有变量都是整数,而机会是双精度。当我打印所有值时,它们绝对是正确的......但机会总是以 0.0 的形式出现。我知道这与将整数转换为双精度数有关,因为我以前遇到过这样的问题几次。让它做你想做的事情的关键是什么?

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

谢谢

4

1 回答 1

3

你应该改写gladValue * 10.0 / oppValue

原因很微妙。你的括号意味着gladValue / oppValue首先计算。但是这些变量是整数,因此结果是整数,因此您会丢失小数部分。只有乘以 10.0 才会提升为双倍;但到那时为时已晚。

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

于 2013-06-22T19:55:28.297 回答