js不区分整数和浮点数,所有数字内部都采用64位浮点格式表示。
1、使用取余运算符(%) + 判断对象是否是数字来判断:
注意:空字符串、字符串类型数字、布尔true、空数组对1求余,结果都是true(因为他们都是对象,),所以要先判断对象是否为数字
- function isInteger(obj){
obj = Number(obj); //先把字符串类型转换成数字类型
- return typeof obj === 'number' && obj%1 === 0; //是整数,则返回true,否则返回false
- }
2、使用Math.round、Math.ceil、Math.floor判断,整数取整之后还是自己
- function isInteger(obj){
obj = Nuber(obj);//先把字符串类型转换成数字类型
- return Math.round(obj) === obj //是整数,则返回true,否则返回false
- }
注意:这种方法直接把空字符串、字符串类型数字、布尔true、空数组给屏蔽掉了
3、ES6提供了Number.isInteger 但只有chrom firefox支持
- Number.isInteger(3.3) // false
- Number.isInteger(3) // true
- Number.isInteger('') // false
- Number.isInteger('3') //false
- Number.isInteger([]) // false
- Number.isInteger(true) //false