我不认为是否会为我的情况而努力。我想确保某个变量在验证时只包含整数。所以不应该允许-1.45在我的情况下。诸如1,23,334之类的值应该被允许/有效。
答案 0 :(得分:25)
第1部分:
您可以使用remainder运算符查找值是否为整数,如:
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);

<强>解释强>
1.45 % 1
返回0.44999999999999996
,23 % 1
返回0
。value % 1 === 0
,那么我们可以说value
是一个整数而不是。第2部分:
在value
实际上不是number
的情况下,此逻辑失败,因为remainder运算符(%)将其操作数转换为如下数字:
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);
&#13;
这导致显示不正确的结果,如空字符串和布尔值显示为整数。我们可以通过检查type of值为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);
&#13;
第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));
&#13;
我们可以将其与第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);
&#13;
答案 1 :(得分:4)
isNaN()
是否检查号码。它不会检查号码是否完整。
function isInt(n) {
return n % 1 === 0;
}
或
if (number % 1 == 0) {
alert('Whole Number');
} else {
alert('Not a Whole Number');
}