C #: нумерация страниц, математика - PullRequest
5 голосов
/ 31 декабря 2010

Я создаю некоторую нумерацию страниц и получаю проблему.

Если у меня есть число 12, и я хочу разделить его на 5 (5 - это количество результатов, которые я хочу получить на странице), как мне правильно его округлить? Это не работает:

int total = 12;
int pages = Math.Ceiling(12 / 5);
//pages = 2.4... but I need it to be 3

Ответы [ 2 ]

13 голосов
/ 31 декабря 2010

Даже если ваш код должен работать, Math.Round не так, вы можете попробовать это:

int pages = (total + pageSize - 1)/pageSize;

Это должно быть то же самое, что и Math.Ceiling, за исключением того, что вы всегда имеете дело с int, а не double в любой момент, когда Math.Ceiling возвращает.

РЕДАКТИРОВАТЬ: Чтобы ваш код работал, вы можете попробовать:

int pages = (int)Math.Ceiling((double)12/(double)5);

Но вы должны использовать первый пример.

6 голосов
/ 31 декабря 2010

вы можете сделать:

int numPages = Math.Ceiling((decimal)12 / (decimal)5);

или

int numPages = (12 + 4) / 5;  //(total + (perPage - 1)) / perPage
...