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已经得到支持。