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类或内置函数?
答案 0 :(得分:5)
你需要使用float
(记得改变函数的返回类型!):
float avg = ((float)votes / players);
int
只能存储整数;它不能存储小数。只有float
和double
(双精度)才能存储十进制数。
您还可以切换公式:
return ((votes * 100) / players);
请注意,这将向下舍入到下一个整数。
答案 1 :(得分:1)
如果你真的想使用整数:
int avg = votes * 100 / players;
return avg;
但最好切换到float
或double
以获得精确度。