Why is Math.ceil not rounding upwards?

crmepham picture crmepham · Jun 5, 2014 · Viewed 7.1k times · Source

I have the following code:

int total = 6;
int perPage = 5;
double pages = total/perPage;
double ceilPages = Math.ceil(pages);
out.println(ceilPages);

Which outputs 1.0.

I thought it should output 2.0 because the result of total/perPage is 1.2.

Why is it not rounding upwards to 2.0?

Answer

Adam Yost picture Adam Yost · Jun 5, 2014

you are casting an the result of integer division to a double.

You need to cast each part of the division to double BEFORE the result.

double pages = (double)total/(double)perPage;

The rest should work