🚨 别被「整数除法」背刺了!一道 15 还是 15.5 的选择题,把我 CPU 干烧了 🔥

62 阅读1分钟

微信图片_20251014151033_10_20.jpg

1️⃣ 开场 3 秒:灵魂拷问 👇

下面这行代码,println(10 - 2 + 3 * 5 / 2),到底输出啥?

选项数值
A27
B15
C27.5
D15.5

我啪的一下选了 D,结果试卷给我打了个 ❌,整个人当场 🤡。


2️⃣ 复盘:我哪里算错了?🕵️‍♂️

按小学数学:

3 * 5 = 15
15 / 2 = 7.5
10 - 2 = 8
8 + 7.5 = 15.5

没毛病啊!但 JVM 说:对不起,我是整数除法,小数直接砍头 🗡️。


3️⃣ 真相:整数除法有多狠?💀

在 Java / Kotlin / C / JS(number 模式下)只要 两边都是整数,除法结果就 向下取整

15 / 27 // 不是 7.5,不是四舍五入,是直接砍!

所以:

10 - 2 + 3 * 5 / 2
= 10 - 2 + 7
= 15

4️⃣ 现场验证:IDE 不会说谎 🖥️

public class Main {
    public static void main(String[] args) {
        System.out.println(10 - 2 + 3 * 5 / 2);   // 15
        System.out.println(10 - 2 + 3 * 5 / 2.0); // 15.5
    }
}

只要把一个操作数改成浮点,小数就回来了! 细节决定发量 👨‍🦲。


5️⃣ 思维导图:一张图背下来 📌

优先级:* / 高于 + -
结合性:左到右
除法:两边整 → 结果整 → 小数被砍
      一边浮 → 结果浮 → 小数保留

6️⃣ 总结:3 句话背下来 🧠

  1. 乘除优先,加减靠后。
  2. 整数除法不留情,小数直接砍。
  3. 想要小数?请把 2 变成 2.0!

8️⃣ 评论区话题 🔥

你还踩过哪些「整数除法」的坑?欢迎丢代码,一起避坑!