Javascript中判断整数的几种方法综述

我们以前已经记录了Javascript被判断为数字类型的一些方法,本文将讨论如何判断为整型(整数)。

Javascript不区分整数和浮点数之间,和所有的数字都是64位浮点格式表示,作为java双型相同,但实际操作中,如数组索引和位操作,基于32位的整数。

方法一,用剩余运算符判断

任何整数除以1,即余数为0。这个规则用来判断它是否是整数。

复制代码代码如下所示:

功能没有提供(obj){

返回对象% 1 = 0

}

IsInteger(3) / /真的

IsInteger(3.3) / /假



上面的输出表明这个函数是好的,但是它对于字符串和一些特殊值似乎不够强。

复制代码代码如下所示:

IsInteger() / /真的

IsInteger(远) / /真的

IsInteger (true) / / true

IsInteger({ }) / /真的



很难接受空字符串、字符串类型、布尔true和空数组都返回true。请参阅这些类型内部转换的详细信息:Javascript中的外来花的false值

因此,有必要判断下一个对象是一个数,如添加一个类型

复制代码代码如下所示:

功能没有提供(obj){

返回类型obj'number'obj % 1 = = = = = = 0

}

IsInteger() / /假

IsInteger(远) / /假

IsInteger(真正的) / /假

IsInteger({ }) / /假



嗯,很完美。

两。使用math.round,Math.ceil,和Math.floor的法官

取整等于自己。使用此功能来确定它是否是一个整数,math.floor例子,如下

复制代码代码如下所示:

功能没有提供(obj){

返回math.floor(obj)=目标

}

IsInteger(3) / /真的

IsInteger(3.3) / /假

IsInteger() / /假

IsInteger(远) / /假

IsInteger(真正的) / /假

IsInteger({ }) / /假



这直接给字符串,真的,{屏蔽},代码也小于以前的函数。

三。法官由parseInt

复制代码代码如下所示:

功能没有提供(obj){

返回parseInt(obj,10)= = = obj

}

IsInteger(3) / /真的

IsInteger(3.3) / /假

IsInteger() / /假

IsInteger(远) / /假

IsInteger(真正的) / /假

IsInteger({ }) / /假



这很好,但有一个缺点。

复制代码代码如下所示:

IsInteger(1000000000000000000000) / /假



应该这样假,回来了。原因是,parseInt军队被解析为解析之前的整数字符串的第一个参数。这种方法不是把一个数为整数的一个很好的选择。

四。逐位判断

复制代码代码如下所示:

功能没有提供(obj){

返回(obj | 0)= = = obj

}

IsInteger(3) / /真的

IsInteger(3.3) / /假

IsInteger() / /假

IsInteger(远) / /假

IsInteger(真正的) / /假

IsInteger({ }) / /假



这个功能很好,效率很高,但是有缺陷。如上所述,位操作只能处理数字在32位,超过32位的无力感,如

复制代码代码如下所示:

IsInteger(math.pow(2, 32)) / / 32以上数字返回false



当然,大部分时间我们不用这么大的数字。

五、提供number.isinteger ES6

复制代码代码如下所示:

number.isinteger(3) / /真的

number.isinteger(3.1) / /假

number.isinteger('') / /假

number.isinteger(远) / /假

number.isinteger(真正的) / /假

number.isinteger({ }) / /假



目前,最新的Firefox和Chrome已经得到支持。