将一个数转换为整数
- JavaScript 里面提供了好几种方法,让我们把一个数转换为一个整数,比如有以下三种
-
Math.floor()
,Math.ceil()
,Math.round()
:最优,最常用 - 位运算符:运算效率略高,但是可读性差,而且只能转换 32 位整数,不常用
-
parseInt()
:适用于将字符串转换为整数,不适合将一个数转换为整数
-
- 它们都有各自的适用范围和优缺点,但是我们实际开发中最常用的,还是第一种,也就是
Math
对象提供的 3 个函数 - 这 3 个函数在转换正数的时候,其结果是不言而喻的,但是当涉及到负数时,就似乎变得有点难以理解了
- 现在笔者将它们的工作原理总结如下,正负数通吃。首先,我们需要在纸上画一条一维坐标轴(初中数学知识)
- 如果传入的数是一个整数或者是一个「不正常」的数 (
NaN
,Infinity
,-Infinity
),这三个函数都会将其原样返回 - 如果传入的数是一个小数,那么我们定位到坐标轴上这个小数的位置,然后
-
Math.floor()
会从它的左边开始,找到离它最近的那个整数,并将其返回Math.floor(1.2) === 1
Math.floor(1.5) === 1
Math.floor(1.7) === 1
Math.floor(-1.2) === -2
Math.floor(-1.5) === -2
Math.floor(-1.7) === -2
-
Math.ceil()
会从它的右边开始,找到离它最近的那个整数,并将其返回Math.ceil(1.2) === 2
Math.ceil(1.5) === 2
Math.ceil(1.7) === 2
Math.ceil(-1.2) === -1
Math.ceil(-1.5) === -1
Math.ceil(-1.7) === -1
-
Math.round()
会从它的左边和右边同时开始,找到离它最近的那个整数,并将其返回- 如果传入的小数刚好处于两个整数的正中间 ( 比如
1.5
),那么只会从右边开始找整数Math.round(1.2) === 1
Math.round(1.5) === 2
Math.round(1.7) === 2
Math.round(-1.2) === -1
Math.round(-1.5) === -1
Math.round(-1.7) === -2
- 如果传入的小数刚好处于两个整数的正中间 ( 比如
-
- 如果传入的数是一个整数或者是一个「不正常」的数 (
总结
- 这只是一个很小的知识点,但是很多书或者文章都解释得不太清楚
- 这里我们只需要引入一个数学工具(坐标轴),一切都变得明晰起来