【问题标题】:Double always returns 0 when dividing ints [duplicate]整数除法时,Double 总是返回 0 [重复]
【发布时间】:2013-06-22 19:54:28
【问题描述】:

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

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

谢谢

【问题讨论】:

    标签: java int double division


    【解决方案1】:

    你应该改写gladValue * 10.0 / oppValue

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

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

    【讨论】:

    • 交易是从执行的第一个操作开始的类型吗?编辑:我看到你的编辑。谢谢。
    猜你喜欢
    • 2012-08-12
    • 2013-12-23
    • 2012-02-12
    • 1970-01-01
    • 1970-01-01
    • 2012-08-04
    • 1970-01-01
    • 1970-01-01
    • 2012-03-16
    相关资源
    最近更新 更多