计算页数的最简单的公式?

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

我是这样做的:

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

我觉得这个计算不是最简单的(我math不好),你能给出一个简单的计算公式吗?

强迫它整理:

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

或者使用浮点math:

 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; 

OP包含一个有效的答案。 如果我想closures分页,那么我可以设置PageSize = int.MaxValue

这里有几个答案添加到imagesFound.Length + PageSizeimagesFound.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页