我有一个数组,我想根据预设的页面大小将它们分成页面。

我就是这样做的:

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

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

我觉得计算不是最简单的(我的数学很差),你能给出一个更简单的计算公式吗?

有帮助吗?

解决方案

强制它围捕:

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

或使用浮点数学:

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

其他提示

实际上,你已经接近了所能做的最好的事情。关于我能想到的唯一可能是“更好”的事情。是这样的:

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

唯一的原因就是你避免使用if语句。

注意:如果页面大小为>您将始终获得至少1页,即使是0计数也是如此。 1,这是我需要的,但可能不是你需要的。页面大小为1(愚蠢但技术上有效),计数为0将为零页。根据您的需要,您可能需要检查计数和值的零值。页面大小为1

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

OP包含有效答案。如果我想关闭分页,那么我可以设置 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);

当PageSize == imagesFound.Length

时,这不应该给你第2页
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top