Java根据数组列表中的项计算百分比

时间:2015-02-06 12:46:52

标签: java math for-loop arraylist

在尝试根据数组列表计算百分比时遇到了一些问题。

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。但是当我打印出总数时,确实给了我总数。

有什么想法吗?

提前致谢。

2 个答案:

答案 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