Java数学问题 - 投票数到百分比

时间:2013-09-04 12:18:19

标签: java math

private static int votePercentage() {
    int players = 0;
    for (int p = 0; h < PLAYERS; p++) {
        if (playersOnline[p] != null) {
            players++;
        }
    }
    int votes = voters.size();
    int avg = (votes / players);
    return (avg * 100);
}

投票:1 玩家:2 返回:0

投票:2 玩家:2 回报:100

问题

问题是,返回的nubmer不是int,并且是1/2因为1/2 = 0.5。 因此它总是会返回0,除非玩家的投票分数不是双倍并且是int。

基本上我想从所有在线玩家中返回投票用户的百分比。

有解决方案吗?也许是java类或内置函数?

2 个答案:

答案 0 :(得分:5)

你需要使用float(记得改变函数的返回类型!):

float avg = ((float)votes / players);

int只能存储整数;它不能存储小数。只有floatdouble(双精度)才能存储十进制数。

您还可以切换公式:

return ((votes * 100) / players);

请注意,这将向下舍入到下一个整数。

答案 1 :(得分:1)

如果你真的想使用整数:

int avg = votes * 100 / players;
return avg;

但最好切换到floatdouble以获得精确度。