在if语句中比较Doubles的问题

时间:2018-09-19 16:33:37

标签: java if-statement double comparison

这是负责调平NPC的方法。例如,如果我们给他下一个等级100 xp,它将使他的等级递增。但是对于下一个级别,如果下一个级别所需的xp等于NPC当前拥有的exp数量,则忽略该语句。但是当我打印它时,它的确是正确的。怎么会来?

public void setExp(int exp) throws Exception {
        if (exp >= 0) {
            this.exp += exp;
            if (this.exp > expForNextLvl) {
                while (this.exp > expForNextLvl) {
                    setLvl(1);
                    setExpForNextLvl(Math.round(expForNextLvl * 1.2 + 5));
                }
            } else if (Double.valueOf(this.exp).equals(Double.valueOf(expForNextLvl))) {
                setLvl(1);
                setExpForNextLvl(Math.round(expForNextLvl * 1.2 + 5));
            }
        } else {
            throw new Exception("exp less than 0");
        }
    }

1 个答案:

答案 0 :(得分:0)

.equals()方法用于比较字符串而不是双精度数,我建议使用this.exp == expForNextLvl