java的Math.ceil向上取整怎么不好使了呢?

七海恋空 2020-12-27 浏览(0 评论(0

最近在用java写分页的代码,我要获取分页的总数。pageCount = Math.ceil(recordCount/pageSize),我觉得这样写没毛病,可是最后的运算结果就是不对,没有向上取整。打个比方,如果带入参数,Math.ceil(5/2)就应该等于3啊!结果我试着运行一下,5除以2居然等于2.0,真是见鬼了。难道Math.ceil函数有问题?

后来我想起来了,前些年也碰到了这种情况!之前我已经习惯了javascript的分页,再写java分页就容易出现这种情况。java对参数类型定义的语法比较严格,Math.ceil(5/2)这里面的5和2是int类型,5/2就是等于2,再向上取整当然还是2。那我们该怎么做呢?Math.ceil(5.0/2.0)这样就可以得到我们想要的结果了。想想看,int类型后面都没有小数点,何来取整一说,所以这里我们要用浮点型。一开始定义参数的时候要注意了,当然我们也可以在后期操作时进行强制转换。

回到分页的代码上来,取页面总数,我这里用的是强制转换成double型,这样结果就正常了。像这样:

pageCount = (int)Math.ceil((double)recordCount/ (double)pageSize)