Подтвердить что ты не робот

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

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

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

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

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

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

4b9b3361

Ответ 1

Заставить его округлить:

totalPage = (imagesFound.Length + PageSize - 1) / PageSize;

Или используйте математику с плавающей запятой:

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

Ответ 2

Собственно, вы близки к лучшему, что можете сделать. О единственном, что я могу думать об этом, может быть "лучше", это примерно так:

totalPage = (imagesFound.Length + PageSize - 1) / PageSize;

И единственная причина, по которой это лучше, заключается в том, что вы избегаете оператора if.

Ответ 3

ПРИМЕЧАНИЕ. Вы всегда получите по крайней мере 1 страницу, даже для счетчика 0, если размер страницы> 1, это то, что мне было нужно, но, возможно, не то, что вам нужно. Размер страницы 1 (глупый, но технически действительный) и число 0 будет равно нулю страниц. В зависимости от ваших потребностей вы можете проверить нулевое значение для количества и размера страницы 1

int pages = ((count - 1) / PAGESIZE) + 1;

Ответ 4

ОП содержит правильный ответ. Если бы я хотел отключить пейджинг, я мог бы установить 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;

Ответ 5

  1. Вы можете получить общее количество страниц на сервере Sql: -
DECLARE @PageCount INT;
DECLARE @NoOfData INT;
SET @NoOfData = (select Count(*) AS [PageCount] from YourTableName)
SET @PageCount=((@[email protected])/@PageSize)
SELECT @PageCount AS [PageCount]
  1. Вы можете войти в свой code-
int totalPage = (int) Math.Ceiling((double) imagesFound.Length / PageSize);

Ответ 6

Кое-что я написал сам:

private int GetPageCount(int count, int pageSize)
{
    int result = 0;

    if(count > 0)
    {
        result = count / pageSize;
        if(result > 0 && (count > (pageSize * result)))
        {
           result++;
        }
    }

    return result;
}

(И, конечно же, не устанавливайте pageSize в int.MaxValue)

Ответ 7

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

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

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