求总页数的几种算法

已知总记录数RecordCount和每页显示的记录数PageSize,怎么手工求PageCount呢?以前看书都是这么写的:

If RecordCount Mod PageSize = 0 Then
    PageCount = RecordCount / PageSize
Else
    PageCount = Int(RecordCount / PageSize) + 1
End If

之后就一直这么写了,也没去想想其他的写法(懒呀),其实还可以这么写的:

If RecordCount Mod PageSize = 0 Then
    PageCount = RecordCount \ PageSize
Else
    PageCount = RecordCount \ PageSize + 1
End If

今天在蓝色理想上看到了第三种经典的写法:

PageCount = Int(RecordCount / PageSize*-1)*-1

刚开始我还不太明白,只想起以前有测试过Int和Fix,区别现在也忘了,重新做了番测试,才明白他们都不四舍五入,都取整,但Int有趋小性,Fix有趋零性,那么上边就不难解释了,假如相除的结果为3.2,变成-3.2,由于趋小性Int返回-4,乘-1就成4了。

好的算法也是建立在对基础东西熟练掌握上,连基础的函数都没搞清何来好算法!

2009-06-02补充:C#也有和ASP的Int函数功能一样的方法:Math.Floor()

评论: 0 | 引用: 0 | 查看次数: 6634
发表评论
登录后再发表评论!