Math.round四舍五入(0.5向正无穷取),Math.ceil无条件向上取整,Math.floor无条件向下取整;三者对正负数处理逻辑不同,需依需求选择。

Math.round、Math.ceil 和 Math.floor 是 JavaScript 中最常用的三个取整函数,它们作用不同,容易混淆。关键看你想怎么处理小数部分:四舍五入、向上取整,还是向下取整。
Math.round:四舍五入(但注意“0.5”的特殊规则)
Math.round(x) 将数字四舍五入到最接近的整数。特别注意:当小数部分正好是 0.5 时,它向**正无穷方向舍入**——也就是“.5 向上取”对正数成立,但对负数是“-2.5 → -2”,因为 -2 比 -3 更接近 0(即更大)。
- Math.round(3.2) → 3
- Math.round(3.5) → 4
- Math.round(-3.5) → -3(不是 -4!)
- Math.round(-3.6) → -4
Math.ceil:无条件向上取整(天花板)
Math.ceil(x) 返回大于或等于 x 的最小整数,也就是“天花板”。无论正负、小数多小,都往更大的方向进一。
- Math.ceil(3.1) → 4
- Math.ceil(3.9) → 4
- Math.ceil(-3.1) → -3(-3 > -3.1)
- Math.ceil(-3.9) → -3
Math.floor:无条件向下取整(地板)
Math.floor(x) 返回小于或等于 x 的最大整数,也就是“地板”。所有小数一律截断,朝更小的方向靠拢。
- Math.floor(3.1) → 3
- Math.floor(3.9) → 3
- Math.floor(-3.1) → -4(-4
- Math.floor(-3.9) → -4
常见误用与实用技巧
别直接对负数用 Math.round 期待“传统四舍五入”,尤其在财务计算中可能出错。如需严格按“0.5 进一”(包括负数),可手动处理:
- 对正数和零:Math.round(x) 可用
- 统一行为(如保留两位小数再四舍五入):Math.round(x * 100) / 100
- 模拟“数学上标准四舍五入”(-3.5 → -4):Math.round(x + (x 或改用 Math.trunc(x + Math.sign(x) * 0.5)
- 取整前先检查是否为 NaN 或 Infinity,避免意外结果










