代码之家  ›  专栏  ›  技术社区  ›  Benny

计算页数的最简单公式?

  •  59
  • Benny  · 技术社区  · 15 年前

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

    我就是这样做的:

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

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

    5 回复  |  直到 6 年前
        1
  •  142
  •   John Kugelman Michael Hodel    15 年前

    强制它进行四舍五入:

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

    或使用浮点数学:

    totalPage = (int) Math.Ceiling((double) imagesFound.Length / PageSize);
    
        2
  •  20
  •   Tom    15 年前

    实际上,你已经尽了最大的努力了。我唯一能想到的可能是“更好”的事情就是这样:

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

    这更好的唯一原因是你避免了if语句。

        3
  •  15
  •   Booji Boy    8 年前
    //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;
    
        4
  •  9
  •   Jeremy    6 年前

    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;
    
        5
  •  -1
  •   Clayton C    9 年前

    为了避免页面编号错误,我认为计算noofpages的最佳方法是执行以下操作

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

    当pagesize==imagesfound.length时,这不应给您第2页。