Java Math.ceil()获取的数为何小于其他语言的?

在根据总数计算总页数的时候,发现使用Math.ceil()计算的页数总数少了一页,看了代码写的也是没问题,去谷歌发现也有人遇到的同样的问题,解决步骤如下

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));
        }});
    }

结果

{
  "status": 0,
  "code": 11000000,
  "msg": "成功",
  "data": {
    "aa": 124,
    "bb": 125,
    "cc": 124,
    "dd": 125
  }
}

可以看到是由于变量a和b都是整数型,所以当相除的时候还是整数型结果,导致在使用Math.ceil()取整的时候获取不到对的结果,只需要把a或者b一个改为浮点型数就可以了

佐证

...
System.out.println(new JSONObject(){{
            put("aa", Math.ceil(12.222)); 
            put("bb", Math.ceil(12));
            put("cc", Math.ceil(12.0));
        }});
...

// 结果
{"aa":13.0,"bb":12.0,"cc":12.0}

这个时候你可能也看到了,对的就是结果是13.0这并不符合我们对数据的处理,我们需要的是 13,因此还需要进一步的处理(int) 13.0

// 两种方式都可以
put("dd", (int) Math.ceil(12.555));
put("ee", (int) 13.0);

至此解决了我的问题!

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容