js 如何判断一个数是整数?

1,930 阅读1分钟

用 js 判断一个数是整数的方式有很多,在这里总结一下。

TL;DR:

1、使用取余的方式,因为任意整数取1的余数都是0。

2、使用 Math.round、Math.ceil、Math.floor,整数取整也永远等于其本身。

3、使用 parseInt(x,10)

4、使用或运算 | ,整数和0采用或运算永远等于本身

5、使用 Number.isInteger() 判断

下面分别看一下细节:

1、使用取余的方式

众所周知,js 具有类型自动转换的效果,所以要先判断数据类型是否是 number,然后再判断取 1 的余数是否等于 0.

function isInteger(num) {
  return typeof num === 'number' && num % 1 === 0
}

isInteger(3)    //true
isInteger(0.34) //false
isInteger('3')  //false
isInteger('')   //false
isInteger(true) //false
isInteger([])   //false

2、使用 Math.round、Math.ceil、Math.floor

使用 Math.floor()示意一下:

function isInteger(num) {
  return Math.floor(num) === num
}

isInteger(3) //true
isInteger(0.34) //false
isInteger('3') //false
isInteger('') //false
isInteger(true) //false
isInteger([]) //false

3、使用 parseInt(x,10)

function isInteger(num) {
  return parseInt(num, 10) === num
}

isInteger(3) //true
isInteger(0.34) //false
isInteger('3') //false
isInteger('') //false
isInteger(true) //false
isInteger([]) //false

4、使用或运算

function isInteger(num) {
  return (num | 0) === num
}

isInteger(3) //true
isInteger(0.34) //false
isInteger('3') //false
isInteger('') //false
isInteger(true) //false
isInteger([]) //false

小科普:与运算:两个位都为 1 时才为 1,其他都为 0;或运算:两个位都为 0 时才为 0,其他都为 1。

5、使用 Number.isInteger()

function isInteger(num) {
  return Number.isInteger(num)
}

isInteger(3) //true
isInteger(0.34) //false
isInteger('3') //false
isInteger('') //false
isInteger(true) //false
isInteger([]) //false