你如何计算Java中的百分比?

问题描述 投票:1回答:3

因此,我正在尝试为玩家制作一个带有健康栏的游戏,但每当我使用交叉产品或任何其他数学方法应该起作用时,百分比结果是0.0 ...这是处理此问题的.java文件:

package com.game.graphics;

import com.game.entity.mob.Mob;

public class HUD {
    Mob target;
    Sprite healthbar;
    Sprite bgBar;

    double percent_normal;

    public HUD(Mob target) {
        this.target = target;
        bgBar = new Sprite(0xff777777, 104, 8);
        healthbar = new Sprite(0xffFF0000, 100, 6);
    }

    public void update() {
        percent_normal = target.getHealth() / 100;
        percent_normal *= target.getMaxHealth();
    }

    public void printData() {
        System.out.println("Normal(" + percent_normal + ")");
    // if the targets's health is any lower than the max health then this seems to always return 0
    }

    public void render(Screen s) {
        s.renderSprite(5, 5, bgBar, false);
        s.renderSprite(7, 6, new Sprite(0xffFF0000, (int) percent_normal, 6), false);
    }
}

我不确定我的数学是完全关闭,还是我认为这是非常错误的。我已经尝试过如何计算它无济于事,这就是为什么我在这里提出这个问题。

java math
3个回答
5
投票

你计算百分比的方式似乎是关闭的。要计算X与Y相比的百分比,您必须这样做:

double result = X/Y;
result = result * 100;

所以在这种情况下你的代码应该是这样的

public void update() {
    percent_normal = target.getHealth() / target.getMaxHealth();
    percent_normal *= 100;
}

你总是得到0.0的原因是因为int 100.我相信target.getHealth()/100将返回一个0.x形式的值,并在转换为double之前变为int 0。


8
投票

不应该这样吗? :

public void update() {
    percent_normal = target.getHealth() / target.getMaxHealth();
    percent_normal *= 100;
}

例如。 :玩家有120健康,最大健康是180.这是,120 / 180 = 0.66666666666给出百分比0.66666666666 * 100 = 66,66...%而不是120 / 100 = 1.2并乘以target.getMaxHealth() 180,导致(1.2 * 180) > 100


-1
投票

基本上计算我们使用它的百分比,

百分比=(a / b)* 100

所以在你的情况下update()方法是错误的,并替换为下面的代码,

public void update()
{
    percent_normal = target.getHealth() / target.getMaxHealth();
    percent_normal * = 100;
}

这是一个例子,仅供参考 - http://www.flowerbrackets.com/java-calculate-percentage/

热门问题
推荐问题
最新问题