You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中Math.ceil()加0.0与不加计算结果不一致问题咨询

Java Math.ceil()结果差异原因说明

核心差异由Java的整数除法规则和运算时的类型自动提升机制导致,两种写法的实际执行逻辑拆解如下:

  • 带0.0 +的正确计算逻辑
    0.0是double类型,和int类型的op、cl相加时,int值会自动提升为double类型,后续除法为浮点数除法:

    1. (0.0 + op) / 2 = 1.0 / 2 = 0.5,Math.ceil(0.5)返回1.0
    2. (0.0 + cl) / 2 = 11.0 / 2 = 5.5,Math.ceil(5.5)返回6.0
    3. 两者求和得7.0,强转int后结果为7,符合预期。
  • 去掉0.0 +的错误计算逻辑
    此时op、cl均为int类型,除法为整数除法,会直接截断小数部分:

    1. op / 2 = 1 / 2 = 0(整数除法截断小数),Math.ceil(0)返回0.0
    2. cl / 2 = 11 / 2 = 5(整数除法截断小数),Math.ceil(5)返回5.0
    3. 两者求和得5.0,强转int后结果为5,就是你遇到的异常结果。

如果不想添加0.0 +,也可以将除数写为2.0(浮点数),同样会触发浮点数除法,得到正确结果,示例:

(int)(Math.ceil(op / 2.0) + Math.ceil(cl / 2.0))

内容的提问来源于stack exchange,提问作者AYUSHI TYAGI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 15:30:03