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

为何Java表达式(double)(10/4)*(int)10.0/4+(double)10/4输出7.5

Java表达式计算结果7.5的逻辑讲解

首先明确Java中3个核心运算规则:

  • 运算优先级:括号 > 强制类型转换 > 乘除 > 加减,同优先级运算从左到右执行
  • 整数除法规则:两个int类型做除法时,会直接舍弃小数部分,只返回整数结果
  • 类型自动提升规则:运算中只要有一个操作数是double类型,另一个操作数会自动提升为double,最终运算结果也为double类型

你给出的计算表达式为:

(double) (10 / 4) * (int) 10.0 / 4 + (double) 10 / 4

分步计算逻辑如下:

  1. 计算括号内的10 / 4:10和4都是int类型,执行整数除法,结果为int类型的2
  2. 执行强制转换(double) 2,得到double类型的2.0
  3. 执行强制转换(int) 10.0,得到int类型的10
  4. 按从左到右顺序计算乘除段2.0 * 10 / 4:
    • 先算2.0 * 10:double和int运算,int自动提升为double,结果为20.0
    • 再算20.0 / 4:double和int运算,结果为5.0
  5. 计算加号右侧的(double) 10 / 4:
    • 先将10强制转换为double得到10.0
    • 再执行10.0 /4,结果为2.5
  6. 执行加法5.0 + 2.5,最终得到结果7.5

你之前计算得到6,大概率是在计算2.0 *10 /4时错误按整数除法得到2,同时误将(double)10 /4按整数除法得到2,最终算出2*2 +2=6,忽略了double参与的除法不会执行整数截断的规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 07:15:03