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

Java算术运算问题:3/2*3赋值给double为何输出3.0而非4.5

运算结果问题解答

你提供的代码如下:

public class YourClassNameHere {
    public static void main(String[] args) {
        double x = 3 / 2 * 3;
        System.out.printf("%.1f", x);
    }
}

输出结果为3.0而非4.5的核心原因是Java的整数除法规则,具体逻辑如下:

  • Java中/和*属于同级运算符,按照从左到右的顺序执行,因此代码会先计算3 / 2,再将结果乘以3。
  • 代码中的3和2都是int类型的字面量,两个整数执行除法运算时会触发整数截断规则:直接舍弃小数部分,只保留整数结果,因此3 / 2的运算结果是int类型的1,不是1.5。
  • 接下来执行1 * 3,依然是int类型的整数运算,得到结果int类型的3。
  • 最后将int类型的3赋值给double类型的变量x时,才会触发自动类型转换,得到3.0,因此最终输出结果为3.0。

如果需要得到4.5的结果,只需要让除法环节执行浮点运算即可,可选修改方案如下:

  • 将其中一个运算数改为浮点字面量:double x = 3.0 / 2 * 3;
  • 对第一个运算数强制转型为浮点型:double x = (double)3 / 2 * 3;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:09:02