Почему Math.ceil не округляется вверх?

1

У меня есть следующий код:

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?

  • 5
    Вы выполняете целочисленное деление, а не с плавающей точкой.
  • 0
    int ceilPages = (total + perPage - 1) / perPage; аккуратнее
Показать ещё 3 комментария
Теги:
math
ceil

3 ответа

14
Лучший ответ

вы делаете результат целочисленного деления на двойной.

Вам нужно отбросить каждую часть деления, чтобы удвоить результат.

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

Остальное должно работать

  • 6
    Не каждая часть. Кастинг первого должен быть достаточным.
0

(int)Math.ceil(3/2.0) даст ответ 2

(int)Math.ceil(3/2) даст ответ 1

Чтобы получить значение float, вам нужно указать (или добавить.0) на один из аргументов

0

double pages = Math.ceil((double) total/perPage);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню