在尝试根据数组列表计算百分比时遇到了一些问题。
int total = 0;
double percentage = 0;
for(int i = 0; i < accountList.size(); i++){
total += Integer.parseInt(accountList.get(i).getTotalCount());
}
for(int j = 0; j < accountList.size(); j++){
percentage = Math.round(Double.parseDouble(accountList.get(j).getTotalCount()) / (double)total);
Log.i("PCT", String.valueOf(percentage));
}
基本上第一个循环是计算总数。然后对于第二个循环,我循环数组列表中的每个项目除以总数以获得百分比。
然而,当我尝试打印出百分比时,我得到0.0。但是当我打印出总数时,确实给了我总数。
有什么想法吗?
提前致谢。
答案 0 :(得分:2)
% = Value / Total * 100
所以计算应该是:
percentage = Math.round((Double.parseDouble(accountList.get(j).getTotalCount()) * 100.0) / (double)total);
答案 1 :(得分:1)
最有可能你的所有分数都小于0.5,所以当你绕过阵营时,你会得到0
。
我怀疑你想要打印100 x派系的百分比。
long percentage = Math.round(100.0 *
Double.parseDouble(accountList.get(j).getTotalCount()) / total);
或者
long percentage = 100L*Integer.parseInt(accountList.get(j).getTotalCount()) / total;
使用整数结果可能并不理想。我建议像这样添加一个精度数字。
double percentage = 1000L
* Integer.parseInt(accountList.get(j).getTotalCount())
/ total / 10.0;
乘以整数计算所需的10倍,除以10.0后,你得到额外的精度数。
e.g。
100 * 1 / 3 == 33
1000 * 1 / 3 / 10.0 == 33.3