math.floor 是 java 中返回小于或等于参数的最大整数的静态方法,结果为 double 类型;支持 double、int、float 输入,对负数如 -2.3 返回 -3.0,需强转 int/long 才能用于索引等场景,区别于 ceil 和 round,且对 nan、无穷大、-0.0 有明确定义。

Math.floor 是 Java 中用于向下取整的静态方法,它返回小于或等于参数的最大整数,结果类型是 double。
基本用法:传入数字,返回 double 类型的向下整数值
该方法接受一个 double 或可自动提升为 double 的数值(如 int、float),返回对应的向下取整结果(仍是 double):
-
Math.floor(3.7)→ 返回3.0 -
Math.floor(-2.3)→ 返回-3.0(注意:-3 比 -2.3 小,且是满足“≤ -2.3”的最大整数) -
Math.floor(5)→ 返回5.0(整数也会转成 double)
常见场景:需要整数结果时要手动强转
因为返回值是 double,如果后续要用作数组索引、循环变量等,通常需转成 int 或 long:
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
-
int idx = (int) Math.floor(7.9);→idx得到7 -
long n = (long) Math.floor(1e10);→ 避免 int 溢出,用 long 接收 - 注意:对绝对值很大的浮点数(如
Double.MAX_VALUE),强转可能丢失精度,需结合业务判断是否安全
和其它取整方法对比:别混淆 floor、ceil、round
容易搞混的几个方法:
-
Math.floor(x):向下取整(≤ x 的最大整数) -
Math.ceil(x):向上取整(≥ x 的最小整数) -
Math.round(x):四舍五入(返回long或int,规则是加 0.5 后 floor) - 例如
x = -2.6:floor → -3.0,ceil → -2.0,round → -3L
特殊值处理:NaN 和无穷大有定义行为
方法对边界情况有明确规范:
-
Math.floor(Double.NaN)→ 返回NaN -
Math.floor(Double.POSITIVE_INFINITY)→ 返回Infinity -
Math.floor(Double.NEGATIVE_INFINITY)→ 返回-Infinity -
Math.floor(-0.0)→ 返回-0.0(保留符号零)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










