Math.floor向下取整(向负无穷),Math.trunc向零取整(截断小数);负数时差异显著,如-3.7:floor得-4,trunc得-3;分页等保守场景用floor,解析输入或格式化用trunc。

JavaScript中对浮点数取整,Math.floor 和 Math.trunc 表现不同,核心区别在于:前者是“向下取整”,后者是“截断小数部分”。负数时差异最明显。
Math.floor:始终向负无穷方向取整
不管正负,都舍去小数部分,返回不大于原数的最大整数。
- Math.floor(3.7) → 3
- Math.floor(-3.7) → -4(不是 -3!因为 -4
- Math.floor(0.9) → 0
- Math.floor(-0.1) → -1
Math.trunc:直接去掉小数,不考虑符号方向
只保留整数部分,等价于向零取整(朝 0 靠拢),正负数都简单“砍掉”小数位。
分析 Java Spring Boot 后端 Controller 代码,自动生成 Markdown 格式的接口文档。当用户说“生成 Java 接口文档”、“生成 API 文档”、“从 Spring 代码生成文档”时触发。
- Math.trunc(3.7) → 3
- Math.trunc(-3.7) → -3(不是 -4!只是移除 .7)
- Math.trunc(0.9) → 0
- Math.trunc(-0.1) → 0
适用场景建议
选哪个取决于你想要的逻辑:
- 做分页计算、数组索引偏移、循环步进等需要“保守向下”时,用 Math.floor(例如:总页数 = Math.ceil(total / pageSize),当前起始索引 = Math.floor(pageIndex * pageSize))
- 解析用户输入、格式化显示、提取纯整数部分(如金额元部分、ID 截断)时,Math.trunc 更直观自然,尤其涉及负数输入
- 若只处理非负数,两者结果一致;但代码健壮性要求高时,别默认假设输入为正
兼容性小提醒
Math.trunc 是 ES6 新增方法,IE 完全不支持;如需兼容旧环境,可用 Math[sign](Math.abs(x)) 模拟:
Math.trunc = Math.trunc || function(x) { return x
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










