javascript 验证值是否为整数

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/16476501/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-27 04:50:58  来源:igfitidea点击:

Validate if a value is a whole number

javascript

提问by PositiveGuy

I don't think isNaN is gonna work for my situation. I want to make sure a certain variable only contains whole numbers when I validate it. So -1.45 in my case should not be allowed. Values such as 1, 23, 334 should be allowed/valid.

我不认为 isNaN 适合我的情况。我想确保某个变量在验证时只包含整数。所以在我的情况下 -1.45 不应该被允许。诸如 1、23、334 之类的值应该是允许/有效的。

回答by pala?н

PART #1:

第1部分:

You can use remainderoperator to find if a value is whole number or not like:

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

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);

Explanation:

解释:

  • The remainder operator returns the remainder left over when one operand is divided by a second operand.
  • For example, 1.45 % 1returns 0.44999999999999996and 23 % 1returns 0.
  • So, now if a value % 1 === 0, then we can say that valueis a whole number else not.
  • 当一个操作数除以第二个操作数时,余数运算符返回剩余的余数。
  • 例如,1.45 % 1返回0.4499999999999999623 % 1返回0
  • 所以,现在如果 a value % 1 === 0,那么我们可以说这value是一个整数,否则不是。


PART #2:

第2部分:

This logic fails in some cases where valueis not actually a number, as remainderoperator (%) converts its operands to numbers like:

在某些情况下,此逻辑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);

This result in a display of incorrect results like empty string and boolean value display as the whole number. We can fix this by checking of type ofvalue is numberlike:

这会导致显示不正确的结果,如空字符串和布尔值显示为整数。我们可以通过检查值的类型来解决这个问题,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);



PART #3:

第 3 部分:

In ES6global object Numbergot a new property Number.isInteger(value). It checks whether valueis a whole number like:

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));

We can integrate this with our modifiedisWholeNumberfunction in part #2 like:

我们可以将其与第 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);

回答by PSR

isNaN()is to check number or not .It will not check the number is whole or not.

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

function isInt(n) {
   return n % 1 === 0;
}

or

或者

if (number % 1 == 0) {
    alert('Whole Number');
} else {
    alert('Not a Whole Number');
}