Самая простая формула для расчета количества страниц?


У меня есть массив и я хочу разделить их на страницы по заданному размеру страницы.

вот как я делаю:

private int CalcPagesCount()
{
    int  totalPage = imagesFound.Length / PageSize;

    // add the last page, ugly
    if (imagesFound.Length % PageSize != 0) totalPage++;
    return totalPage;
}

Я чувствую, что расчет не самый простой (я плохо разбираюсь в математике), можете ли вы дать одну более простую формулу расчета?

5 55

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;

чтобы избежать ошибок с нумерацией страниц лучший способ, который я могу придумать для вычисления noOfPages, - это сделать следующую строку

totalPage = Math.Ceiling(imagesFound.Length / PageSize);

Это не должно дать вам страницу 2, когда PageSize == imagesFound.Длина