人傻了,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;
}
可长点心吧!!!