Java Math.ceil()獲取的數(shù)為何小于其他語(yǔ)言的?

在根據(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)題!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容