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

为何Java中9/2赋值给double输出4.0?强制转换后结果为4.5?

Java中9/2两种输出结果的原因解析

疑问1:为何9/2以double类型输出时结果为4?

Java里有个核心规则:当两个操作数都是int类型(比如字面量9和2)时,执行的是整数除法——计算时直接砍掉小数部分,只留商的整数部分。所以9/2的结果本身是int类型的4。如果把这个结果转成double类型输出,本质是把int的4自动转成double的4.0;但要是直接输出9/2,因为结果是int类型,显示出来就是4。

疑问2:为什么double divide_ = 9 / 2;输出4.0,而double divide = (double) 9 / 2;输出4.5?

  • 执行double divide_ = 9 / 2;时:
    先算9/2的整数除法,得到int类型的4,之后把这个4赋值给double变量时,会自动转换成4.0,所以最终输出4.0。
  • 执行double divide = (double) 9 / 2;时:
    强制类型转换(double)9的优先级比除法高,所以先把int的9转成double的9.0。这时候除法的两个操作数一个是double、一个是int,Java会自动把int的2升级成double的2.0,执行浮点数除法,算出来的结果就是4.5,赋值给变量后输出自然是4.5。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 04:15:25