[英]Is there a more efficient or generally better way to determine if a number is an integer than this?
现在,我正在使用此函数来确定数字是否为整数:
function isInteger(input){
return (input%1==0);
}
有更有效的方法吗? 我知道有一个内置的javascript函数,但是在某些IE版本中不起作用。
根据jsPerf ,在我的浏览器中, ~~
( 重复按位NOT )和<< 0
(向左移0位)更快:
function isInteger(input) {
return (~~input === input);
}
function isInteger2(input) {
return (input << 0 === input);
}
警告 :JavaScript按位运算符将其操作数强制转换为有符号的32位整数 ,因此,此方法仅对
Math.pow(2, 31) -1
(2147483647)以下的数字安全。 如果不能保证使用另一种方法。
在其他方法中, n % 1 === 0
和Math.floor(value) === value
慢40-50%,而Number.isInteger
落后。
但是,它们都“相当快”。 除非您需要检查大量数字,否则这些方法都不会成为您应用程序中的瓶颈。
function isInteger(input){
Number.isInteger(input)
}
Number.isInteger = Number.isInteger || function(value) {
return typeof value === "number" &&
isFinite(value) &&
Math.floor(value) === value;
};
来源: https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger#Polyfill
function isInt(val) {
return val + 0 === val;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.