发布于2026-07-08 阅读(0)
扫一扫,手机访问
在 Ja vaScript 里处理数字取整,Math.ceil() 和 Math.floor() 是一对很容易混淆但又极其常用的方法。先给你个最直观的印象:Math.ceil() 向上取整,返回大于或等于原数的最小整数,比如 Math.ceil(-2.9) 的结果是 -2;Math.floor() 向下取整,返回小于或等于原数的最大整数,比如 Math.floor(-1.2) 的结果是 -2。两者都不改变原值,只是返回一个新的整数。

简单来说,Math.ceil() 就是“只要有小尾巴就往大里走”,而 Math.floor() 则是“不管尾巴多大都直接扔掉,只留整数部分”——当然这只适用于正数。一旦遇到负数,逻辑就得跟着数轴方向来理解。下面展开细说。
这个方法的特点是:无论小数部分多小,哪怕只有 0.0001,也会往下一个整数进位。对于负数来说,“向上”指的是朝向数轴右侧、更接近零的方向。
Math.ceil(3.1) → 4Math.ceil(7) → 7(整数不变)Math.ceil(-2.9) → -2(因为 -2 是大于 -2.9 的最小整数)Math.ceil(-5) → -5这个方法直接舍去小数部分,向负无穷方向取整。负数时结果会比原数更小(也就是更远离零)。
Math.floor(4.9) → 4Math.floor(0.1) → 0Math.floor(-1.2) → -2(因为 -2 小于 -1.2,是小于等于 -1.2 的最大整数)Math.floor(-8) → -8这两个方法在分页计算、栅格布局、数组分块等需要整数边界控制的场合特别常用。举几个例子:
Math.ceil(总条数 / 每页条数)。比如 25 条数据、每页 10 条,Math.ceil(25/10) 得到 3 页。Math.floor((n - 1) / 每页条数) + 1。Math.floor(0.1 + 0.2) 返回 0(因为 0.1+0.2 在 IEEE 754 下等于 0.30000000000000004)。稳妥做法是先用 Number.toFixed() 或乘除法归一化,例如 Math.floor((0.1 + 0.2) * 10) / 10 先得到 0.3 再处理。这两个方法都接受字符串形式的数字(会隐式转换),但遇到无法转为有效数字时返回 NaN。下面是一些边界情况:
Math.ceil("3.7") → 4(虽然能工作,但不建议依赖隐式转换)Math.floor("hello") → NaNMath.ceil(null) → 0(因为 Number(null) 等于 0)建议在调用之前先校验输入:typeof x === 'number' && !isNaN(x),这样能避免很多隐性 bug。
上一篇:如何利用 Java **信号量(Semaphore)**实现对下游第三方受限 API 的平滑并发限流
下一篇:怎么通过 System.getenv() 与 System.getProperty() 的协同工作实现多级配置变量覆盖
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8