Java格式化浮点小数点

时间:2014-12-01 09:26:07

标签: java floating-point format

尝试在Java中执行计算时遇到了一些问题。这是我的代码:

NumberFormat pctFormatter = NumberFormat.getNumberInstance();
    pctFormatter.setMinimumFractionDigits(0);
    pctFormatter.setMaximumFractionDigits(0);
    for(int count = 0; count< amtGenderList.size(); count++){
        if(amtGenderList.get(count).getGender().equals("M")){
            totalMale = Integer.parseInt(amtGenderList.get(count).getTotalAttendee())/totalAttendee * 100;
            Log.i("Male", String.valueOf(totalMale));
        }else{
            totalFemale = Integer.parseInt(amtGenderList.get(count).getTotalAttendee())/totalAttendee * 100;
        }
        Log.i("Total",amtGenderList.get(count).getTotalAttendee());
        Log.i("Gender",amtGenderList.get(count).getGender());
    }

    Log.i("M", pctFormatter.format(totalMale));
    Log.i("F", pctFormatter.format(totalFemale));

我打印出日志以检查值。所以基本上我有一个totalAttendee变量来存储某个事件的总参加者。然后从那里,我执行另一个SQL来获取totalMale和totalFemale。

当我尝试执行一些计算以获得totalMale和女性超过totalAttendee的百分比时,我得到的结果为:

12-01 17:20:26.348: I/Total(10393): 1
12-01 17:20:26.348: I/Gender(10393): F
12-01 17:20:26.348: I/Male(10393): 0.0
12-01 17:20:26.348: I/Total(10393): 2
12-01 17:20:26.348: I/Gender(10393): M
12-01 17:20:26.348: I/M(10393): 0
12-01 17:20:26.348: I/F(10393): 0

我设法从日志中打印出Total和Gender,这意味着我的检索没有问题。但是,当我试图将其转换为百分比时,我得到0.任何想法?

1 个答案:

答案 0 :(得分:2)

你在这里进行整数除法:

Integer.parseInt(amtGenderList.get(count).getTotalAttendee())/totalAttendee * 100

如果进行整数除法,事情会被截断,例如75 / 1000

通过将其中一个值转换为double来进行浮点除法:

Integer.parseInt(amtGenderList.get(count).getTotalAttendee()) / (double) totalAttendee * 100