验证值是否为整数

Pos*_*Guy 13 javascript

我不认为是NNN会为我的情况工作.我想确保某个变量在验证时只包含整数.所以不应该允许-1.45在我的情况下.诸如1,23,334之类的值应该是允许/有效的.

pal*_*aѕн 25

第1部分:

您可以使用余数运算符来查找值是否为整数,如:

function isWholeNumber(value) {
  if (value % 1 === 0) {
    console.log(value + ' is a whole number');
  } else {
    console.log(value + ' is not a whole number');
  }
}

// Display the result here
isWholeNumber(1.45);
isWholeNumber(23);
Run Code Online (Sandbox Code Playgroud)

说明:

  • 当一个操作数除以第二个操作数时,余数运算符返回剩余的余数.
  • 例如,1.45 % 1退货0.4499999999999999623 % 1退货0.
  • 所以,现在如果a value % 1 === 0,那么我们可以说这value是一个整数而不是.

第2部分:

这种逻辑在某些情况下失败,其中value实际上不是a number,因为余数运算符(%)将其操作数转换为如下数字:

function isWholeNumber(value) {
  console.log(value % 1); //<--- result is always 0
  if (value % 1 === 0) {
    console.log(value + ' is a whole number');
  } else {
    console.log(value + ' is not a whole number');
  }
}

// Display the result here
isWholeNumber('23');
isWholeNumber('');
isWholeNumber(true);
Run Code Online (Sandbox Code Playgroud)

这导致显示不正确的结果,如空字符串和布尔值显示为整数.我们可以通过检查值的类型来解决这个问题,number例如:

function isWholeNumber(value) {
  if (typeof value === 'number' && value % 1 === 0) {
    console.log(value + ' is a whole number');
  } else {
    console.log(value + ' is not a whole number');
  }
}

// Display the result here
isWholeNumber(1.45);
isWholeNumber(24);
isWholeNumber('23');
isWholeNumber('');
isWholeNumber(true);
Run Code Online (Sandbox Code Playgroud)


第3部分:

ES6中,全局对象Number得到了一个新属性Number.isInteger(value).它检查是否value是一个整数:

// Display the result here
console.log(Number.isInteger(1.45));
console.log(Number.isInteger(24));
console.log(Number.isInteger('23'));
console.log(Number.isInteger(''));
console.log(Number.isInteger(true));
Run Code Online (Sandbox Code Playgroud)

我们可以将它与我们在第2部分中的修改 isWholeNumber函数集成,如:

function isWholeNumber(value) {
  if (Number.isInteger(value)) {
    console.log(value + ' is a whole number');
  } else {
    console.log(value + ' is not a whole number');
  }
}

// Display the result here
isWholeNumber(1.45);
isWholeNumber(24);
isWholeNumber('23');
isWholeNumber('');
isWholeNumber(true);
Run Code Online (Sandbox Code Playgroud)


PSR*_*PSR 5

isNaN()是检查号码是否完整,不会检查号码是否完整。

function isInt(n) {
   return n % 1 === 0;
}
Run Code Online (Sandbox Code Playgroud)

或者

if (number % 1 == 0) {
    alert('Whole Number');
} else {
    alert('Not a Whole Number');
}
Run Code Online (Sandbox Code Playgroud)

  • 你只是复制粘贴Palash的答案吗?不是很酷。 (11认同)
  • ...这是从另一个答案中复制的。 (7认同)