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

Java中表达式11%2*7/(3+2)的结果是1还是1.4?运算符优先级疑问

结论

两个结果在对应运算场景下均符合Java语法规则,不存在错误,差异来源于Java对整数除法和浮点除法的不同处理逻辑。


原推导优先级验证

你按照PEDMAS规则梳理的运算优先级完全正确,运算顺序如下:

  1. 先计算括号内的加法:3+2 = 5
  2. 再计算取余运算:11%2 = 1
  3. 同级乘除运算从左到右执行:1*7 =7,最后计算除法7/5

结果差异原因

  • 当所有参与运算的操作数都是整数类型(如int)时,Java默认执行整数除法,会直接截断结果的小数部分,仅保留整数位,因此7/5的运算结果为1,和你的推导结果一致。
  • 当运算中存在float/double类型的操作数时,Java会自动将所有操作数提升为对应的浮点类型,执行浮点除法,保留小数部分,因此7/5的运算结果为1.4。如果仅把最终运算结果强制赋值给float变量,但所有操作数还是int类型的话,会先按整数除法算出1再转成float,结果是1.0而非1.4,只有运算过程中存在浮点操作数时才会得到1.4的结果。

代码示例验证

// 全int操作数场景
int intResult = 11 % 2 * 7 / (3 + 2);
System.out.println(intResult); // 输出1

// 含float操作数场景
float floatResult = 11 % 2 * 7.0f / (3 + 2);
System.out.println(floatResult); // 输出1.4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 03:39:02