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
Validate if a value is a whole number
提问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 % 1
returns0.44999999999999996
and23 % 1
returns0
. - So, now if a
value % 1 === 0
, then we can say thatvalue
is a whole number else not.
- 当一个操作数除以第二个操作数时,余数运算符返回剩余的余数。
- 例如,
1.45 % 1
返回0.44999999999999996
和23 % 1
返回0
。 - 所以,现在如果 a
value % 1 === 0
,那么我们可以说这value
是一个整数,否则不是。
PART #2:
第2部分:
This logic fails in some cases where value
is 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 number
like:
这会导致显示不正确的结果,如空字符串和布尔值显示为整数。我们可以通过检查值的类型来解决这个问题,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 Number
got a new property Number.isInteger(value)
. It checks whether value
is 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 modifiedisWholeNumber
function 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');
}