У меня есть следующий код:
int total = 6;
int perPage = 5;
double pages = total/perPage;
double ceilPages = Math.ceil(pages);
out.println(ceilPages);
Какие выходы 1.0
.
Я думал, что он должен выводить 2.0
потому что результат total/perPage
равен 1.2
.
Почему он не округляет вверх до 2.0
?
вы делаете результат целочисленного деления на двойной.
Вам нужно отбросить каждую часть деления, чтобы удвоить результат.
double pages = (double)total/(double)perPage;
Остальное должно работать
(int)Math.ceil(3/2.0)
даст ответ 2
(int)Math.ceil(3/2)
даст ответ 1
Чтобы получить значение float, вам нужно указать (или добавить.0) на один из аргументов
double pages = Math.ceil((double) total/perPage);
int ceilPages = (total + perPage - 1) / perPage;
аккуратнее