如何测试变量是否包含数字并且是整数?
例如:
例如:
if (1.589 == integer) // false
if (2 == integer) // true
任何线索?if (1.589 == integer) // false
if (2 == integer) // true
任何线索?num % 1 === 0
这会先将num
转换为Number
类型,因此可以转换为整数的任何值都将通过测试(例如'42'
,true
)。
如果您想排除这些值,还需要进行额外的检查。
typeof num === 'number'
你也可以使用parseInt()
来实现这个功能,例如:
parseInt(num) == num
对于无类型检查和
parseInt(num) === num
需要进行类型检查,请注意这些测试不是等价的:通过使用 parseInt()
进行检查将首先转换为 String
,因此例如 true
将不能通过检查。
还要注意,使用 parseInt()
进行未经类型检查的检查将正确处理十六进制字符串,但对于八进制数(即具有前导零的数字字符串)会失败,因为这些字符串被 parseInt()
识别而不被 Number()
识别。如果您需要处理具有前导零的十进制字符串,则必须指定基数参数。
这个可以工作:
if (Math.floor(x) == x)
Math.floor(x) === x
可以使用Number.isInteger()
函数。它还会检查值是否为数字。
例如:
Number.isInteger(3) // true
Number.isInteger(3.1) // false
Number.isInteger('3') // false
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger
if((typeof(no)=='number') && (no.toString().indexOf('.')==-1))
8.000
。当您在该数字上调用 toString()
时,您会得到 '8'
。演示:http://jsfiddle.net/Msyrh/ - Šime Vidas这个行不行:
if (parseInt(number, 10) == number)
{
alert(number + " is an integer.");
}
parseInt()
识别但不被Number()
识别。 - Christoph你可以利用Java的解析能力,或者尝试使用模数运算符%...
有一个名为isNaN(val)的JavaScript函数,如果val不是数字,则返回true。
如果您想将val用作数字,需要使用parseInt()或parseFloat()进行强制转换
编辑: 糟糕。根据评论中提到的错误进行更正