如何检测给定数字是否为整数?

时间:2009-08-24 16:13:40

标签: javascript numbers

如何测试变量以确定它是否包含数字,并且它是一个整数?

e.g。

if (1.589 == integer) // false
if (2 == integer) // true

任何线索?

9 个答案:

答案 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()进行强制转换

编辑: 哎呀。更正了评论中提到的错误