java整数除法向零截断,如-7/3得-2;向下取整需用math.floordiv(-7,3)得-3;余数符号同被除数,模运算需手动转换。

Java 中整数相除(如 int / int)默认向零截断,即直接丢弃小数部分,不四舍五入、不进位、不向下取整。这是 Java 语言规范明确规定的:结果等于数学除法结果向零方向舍入后的整数值。
例如:7 / 3 得 2,-7 / 3 得 -2,7 / -3 也得 -2,-7 / -3 得 2。
注意:负数除法不是向下取整(floor),而是“砍掉小数”,所以 -7 / 3 = -2,而非 -3。
如何获得真正的向下取整(floor division)?
Java 没有内置的 floor 除法运算符,但可用以下方式模拟:
- 对非负数:直接用 / 即可(因为向零截断 = 向下取整)
- 对可能含负数的场景:用 Math.floorDiv(a, b)(JDK 8+)——它按数学意义向下取整,如
Math.floorDiv(-7, 3)返回-3 - 手动实现(兼容旧 JDK):
(a >= 0) == (b >= 0) ? a / b : (a / b) - (a % b != 0 ? 1 : 0),但易错,推荐优先用Math.floorDiv
想保留小数结果?强制转成浮点类型
整数除法结果仍是整数,若需小数,必须至少有一个操作数是浮点型:
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
-
7 / 3→2(int) -
7.0 / 3或(double)7 / 3→2.3333333333333335 - 注意:
7 / 3.0也自动提升为 double 运算
余数(%)与除法结果严格对应
Java 中满足恒等式:a == (a / b) * b + (a % b)(b ≠ 0)。这意味着余数符号与被除数相同:
-
7 % 3→1 -
-7 % 3→-1(不是2) -
7 % -3→1 -
-7 % -3→-1
因此,不要把 % 当作“模运算”(mod)来用——它其实是“余运算”(remainder)。需要真正模运算时,可用:((a % b) + b) % b(确保非负结果)。
不复杂但容易忽略。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










