Проблема с использованием математических функций Java для поиска номера страницы для разбивки на страницы - PullRequest
0 голосов
/ 15 сентября 2010

Если у меня есть 2 записи базы данных и 25 записей на странице, то следующий код:

System.out.println("page count: " + (double)2/25);

приводит к выводу:

page count: 0.08

Но поскольку я использую эту цифру для нумерации страниц, мне нужно следующее наибольшее целое число, в данном случае: 1.

И Math.ceil, и Math.abs дают результат 0 или 0.0.

Как получить целое число страницы?

Ответы [ 4 ]

8 голосов
/ 15 сентября 2010

Правильный способ сделать это:

int pages = (totalRecords+recordsPerPage-1)/recordPerPage;

В вашем случае: страниц = (2 + 25 - 1) / 25 = 26/25 = 1

3 голосов
/ 15 сентября 2010

Math.ceil никогда не должен давать вам 0 за 0.08.Очевидно, есть ошибка в коде, который вы не опубликовали.

System.out.println(Math.ceil((double)2/25));

выводит 1.0 в Java 6u21, как вы и ожидали.приведение к double по одному из аргументов и int / int всегда возвращает int в Java.

2 голосов
/ 15 сентября 2010

Вы можете добавить 1 к вашему результату, а затем выполнить приведение к int.

(int) (1 + (double)2/25)

Это перейдет к следующему большему числу, а затем обрезается.

Но правильное уравнение будет:

(int) (0.5 + (double) 2/25)

Итак, если у вас есть 25, то это будет:

0.5 + 25/25 

или

0.5 + 1 so int of that is 1

Вы можете округлить, добавив .5 и взяв int.

0 голосов
/ 15 сентября 2010

Как только вы получите 0.08, добавьте 0.5, затем выполните Math.floor.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...