1️⃣ 开场 3 秒:灵魂拷问 👇
下面这行代码,println(10 - 2 + 3 * 5 / 2),到底输出啥?
| 选项 | 数值 |
|---|---|
| A | 27 |
| B | 15 |
| C | 27.5 |
| D | 15.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 / 2 → 7 // 不是 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 句话背下来 🧠
- 乘除优先,加减靠后。
- 整数除法不留情,小数直接砍。
- 想要小数?请把 2 变成 2.0!
8️⃣ 评论区话题 🔥
你还踩过哪些「整数除法」的坑?欢迎丢代码,一起避坑!