如何测试变量以确定它是否包含数字,并且它是一个整数?
e.g。
if (1.589 == integer) // false
if (2 == integer) // true
任何线索?
答案 0 :(得分:52)
num % 1 === 0
这会首先将num
转换为Number
类型,因此任何可以转换为整数的值都会通过测试(例如'42'
,true
)。< / p>
如果您想要排除这些,请另外检查
typeof num === 'number'
您也可以使用parseInt()
来执行此操作,即
parseInt(num) == num
进行无类型检查和
parseInt(num) === num
进行打字检查。
请注意,测试不等效:通过parseInt()
进行检查会先转换为String
,因此例如true
将无法通过检查。
另请注意,通过parseInt()
进行的无类型检查将正确处理十六进制字符串,但对于octals(即前导零的数字字符串)将失败,因为parseInt()
会识别这些字符串,但{{1}不会识别}}。如果需要处理带前导零的十进制字符串,则必须指定基数参数。
答案 1 :(得分:9)
这有效:
if (Math.floor(x) == x)
答案 2 :(得分:6)
有人已经done it for you。
答案 3 :(得分:4)
您可以使用整数的正式定义:
Math.floor(x) === x
答案 4 :(得分:2)
这个怎么样:
if((typeof(no)=='number') && (no.toString().indexOf('.')==-1))
答案 5 :(得分:2)
这不起作用:
if (parseInt(number, 10) == number)
{
alert(number + " is an integer.");
}
答案 6 :(得分:1)
可以使用函数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
答案 7 :(得分:0)
你既可以使用javas解析功能,也可以试用模运算符%...
答案 8 :(得分:-1)
有一个名为isNaN(val)的javascript函数,如果val不是数字,则返回true。
如果要将val用作数字,则需要使用parseInt()或parseFloat()进行强制转换
编辑: 哎呀。更正了评论中提到的错误