神说要有光

人傻了,582/20=19?

刚刚在写一个接口,有一个部分是通过楼层数计算当前楼层数属于那一页(每页20楼)

        //计算输入楼层为第几页码
        int pageNo=0;
        if(floor<=20){
            pageNo=1;
        }else {
            pageNo=(floor%20)>0?(int) Math.ceil(floor/20):floor/20;
        }

乍一看,没什么问题啊?
甚至我打开电脑计算器输入582/20确实等于29.1,使用Math.ceil函数应该得到的是pageNo=30;

运算符没法点进去看,所以就求助于百度,好家伙,我直接搜索Java怎么计算除法,得到的都是使用“/”
但突然注意到有个帖子说要正确计算需要加float强转,突然意识到了什么

果然,“/”符号是取整的,要是商是整数还好,包含小数就GG了。

参考如下代码:

/**
 * TODO 除法运算,保留小数
 * @author 袁忠明
 * @date 2018-4-17下午2:24:48
 * @param a 被除数
 * @param b 除数
 * @return 商
 */
public static String txfloat(int a,int b) {
    // TODO 自动生成的方法存根
 
    DecimalFormat df=new DecimalFormat("0.00");//设置保留位数

    return df.format((float)a/b);
   
}

修改下自己的代码:

    //计算输入楼层为第几页码
    int pageNo=0;
    if(floor<=20){
        pageNo=1;
    }else {
        pageNo=(floor%20)>0?(int) Math.ceil((float)floor/(float)20):floor/20;
    }

可长点心吧!!!

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »