在根據(jù)總數(shù)計(jì)算總頁(yè)數(shù)的時(shí)候,發(fā)現(xiàn)使用Math.ceil()計(jì)算的頁(yè)數(shù)總數(shù)少了一頁(yè),看了代碼寫(xiě)的也是沒(méi)問(wèn)題,去谷歌發(fā)現(xiàn)也有人遇到的同樣的問(wèn)題,解決步驟如下
JS代碼演示取整
Math.ceil(3726 / 30)
// 125
Java代碼演示
public Response test()
{
Integer a = 3736;
Integer b = 30;
return this.renderJson(new JSONObject(){{
put("aa", Math.ceil(a / b));
put("bb", Math.ceil(a / (float) b));
put("cc", a / b);
put("dd", Math.ceil(a / (double) b));
}});
}
結(jié)果
{
"status": 0,
"code": 11000000,
"msg": "成功",
"data": {
"aa": 124,
"bb": 125,
"cc": 124,
"dd": 125
}
}
可以看到是由于變量a和b都是整數(shù)型,所以當(dāng)相除的時(shí)候還是整數(shù)型結(jié)果,導(dǎo)致在使用Math.ceil()取整的時(shí)候獲取不到對(duì)的結(jié)果,只需要把a(bǔ)或者b一個(gè)改為浮點(diǎn)型數(shù)就可以了
佐證
...
System.out.println(new JSONObject(){{
put("aa", Math.ceil(12.222));
put("bb", Math.ceil(12));
put("cc", Math.ceil(12.0));
}});
...
// 結(jié)果
{"aa":13.0,"bb":12.0,"cc":12.0}
這個(gè)時(shí)候你可能也看到了,對(duì)的就是結(jié)果是13.0這并不符合我們對(duì)數(shù)據(jù)的處理,我們需要的是 13,因此還需要進(jìn)一步的處理(int) 13.0
// 兩種方式都可以
put("dd", (int) Math.ceil(12.555));
put("ee", (int) 13.0);
至此解決了我的問(wèn)題!