繁体   English   中英

有没有更有效或更一般的方法来确定数字是否为整数?

[英]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 === 0Math.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM