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

Java代码输出不符预期:为何exp1=5、exp2=4而非均为5?

问题分析:为什么输出是5,4而非5,5?

这是Java整数除法特性和运算优先级共同作用的结果,核心在于整数除法会直接丢弃小数部分,只保留整数商,具体拆解两个表达式:

  • 对于exp1 = (x * y / x):
    运算顺序是先执行乘法x*y,即2*5=10,再做除法10/x=10/2=5,全程没有精度丢失,结果为5。

  • 对于exp2 = (x * (y / x)):
    括号改变了运算优先级,先计算括号内的y/x,也就是5/2。由于是整数除法,5除以2的商为2,余数1被直接丢弃,得到结果2。再用x乘以这个结果:2*2=4,因此exp2最终值为4。

本质是exp2提前执行除法导致精度丢失,而exp1先做乘法规避了这个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 04:10:22