int pageCount=(count+pageSize-1)/pageSize;//这里不明白为什么要-1,谁能解释下。谢谢了!
       count是list的第一条数据
        pageSize是页面显示数
        +起来当然要-1
不然的话页面显示会多出条记录的
如果页面设定了最大显示数,会出错的

解决方案 »

  1.   

    int pageCount=(count+pageSize-1)/pageSize不要想成-1 想成(count+(pageSize-1)) 如果pageSize=10的话 那就是10进制的,然后为了保证有最有一页,所以要在count后面加(pageSize-1)=9,再除pageSize会得到正确的页数
      

  2.   

    int pageCount=(count+pageSize-1)/pageSize;我理解另一种,根据数学知识,以上可以写成:
    int pageCount=(count-1)/pageSize + 1;其实是这样 总条数/每页的条数 就是页数,但是在程序中的除法运算
    它只取整数的那部分,所以如果比方说得到了个2.4,那么它会认为是2,所以
    后面加1;但你再想如果正好得到了个整数呢,比方说得到了个3,那么后面再加1
    就多出了一页,所以为了让前面 除得的结果还是比得到的整数小1,那么让它的总
    条数少1,得到的页数自然就少1,后面又将页数加1,得到的结果正好。不知你看明白没
      

  3.   

    count:总记录数
    pageSize:每页记录数
    直接用count/pageSize无法判断实际页数。
    例:10/5=2,6/5=1
    上例中的总页数都应为2页,但6/5会得到不正的答案。{count+pageSize-1)/pageSize就不同了,
    相当于在原总记录数+不大于页数的最大值(加上了不到一页的记录数),
    这时再除以pageSize就可以判断整分页和count/pageSize不能整除的情况了。
    例:(10+(5-1))/5=2,(6+(5-1))/5=2
      

  4.   

    int pageCount=(count+pageSize-1)/pageSize 不要想成-1 想成(count+(pageSize-1)) 如果pageSize=10的话 那就是10进制的,然后为了保证有最有一页,所以要在count后面加(pageSize-1)=9,再除pageSize会得到正确的页数lz不看我回的帖子。如果是count=1的话如果加了(pageSize-1)=9的话不就可以进一位了么?然后再去除以十就可以得到1了阿如果pageSize =16的话你就当作是16进制的撒加上(pageSize-1)=15是为了保证当count为只比16的倍数多1的情况下可以进上一位,多出不满条的那页 而在count在只差一个就是16的倍数的情况下,又能保证count+15除以pageSize 时页数不会多,因为除了之后只取正数部分。
      

  5.   

    pageSize-1:小于页记录数的最大值。总记录数加上它可以使:
    count整除pageSize的时候,整除运算结果不受影响;
    count不能整除pageSize时,使余数+小于页记录数的最大值>页记录数的最大值,进位(同时进位数不会>1),这样再整除,实现了在此种情况下分页操作时最后n条记录也需占用一页的效果。