Самая простая формула для расчета количества страниц?
У меня есть массив и я хочу разделить их на страницы по заданному размеру страницы.
вот как я делаю:
private int CalcPagesCount()
{
int totalPage = imagesFound.Length / PageSize;
// add the last page, ugly
if (imagesFound.Length % PageSize != 0) totalPage++;
return totalPage;
}
Я чувствую, что расчет не самый простой (я плохо разбираюсь в математике), можете ли вы дать одну более простую формулу расчета?
5 ответов:
заставить его сгонять:
totalPage = (imagesFound.Length + PageSize - 1) / PageSize;
или использовать математику с плавающей запятой:
totalPage = (int) Math.Ceiling((double) imagesFound.Length / PageSize);
на самом деле, вы близки к лучшее, что вы можете сделать. О единственном, что я могу придумать, что может быть "лучше", это что-то вроде этого:
totalPage = (imagesFound.Length + PageSize - 1) / PageSize;
и единственная причина, по которой это лучше, заключается в том, что вы избегаете оператора if.
//note: you will always get at least 1 page, even for 0 count, which is what I needed but may not be what you need. int pages = ((count - 1) / PAGESIZE) + 1;
ОП содержит правильный ответ. Если бы я хотел выключить подкачки, то я мог бы установить
PageSize = int.MaxValue
.несколько ответов здесь, чтобы добавить
PageSize
(imagesFound.Length + PageSize
) и это вызовет переполнение. Что затем приводит к неверному результату.это код, который я собираюсь использовать:
int imageCount = imagesFound.Length; // include this if when you always want at least 1 page if (imageCount == 0) { return 1; } return imageCount % PageSize != 0 ? imageCount / PageSize + 1 : imageCount / PageSize;