Number.isInteger()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Number.isInteger() 静态方法判断传入值是否为整数。

尝试一下

语法

js
Number.isInteger(value)

参数

value

要测试是否为整数的值。

返回值

如果给定值是整数,则返回布尔值 true。否则为 false

描述

如果目标值是一个整数,返回 true,否则返回 false。如果该值是 NaN 或者 Infinity,返回 false。对于可以表示为整数的浮点数,该方法也将返回 true。如果该值不是一个数字,该方法将始终返回 false

请注意,一些数字字面量看起来像是非整数,但实际上却表示整数。这是由于 ECMAScript 浮点数编码(IEEE-754)的精度限制。例如,5.0000000000000001 只与 5 相差 1e-16,这个差值太小了而无法表示。(作为参考,Number.EPSILON 存储 1 与大于 1 的下一个可表示的浮点数之间的距离,大约为 2.22e-16。)因此,5.0000000000000001 将使用与 5 相同的编码表示,从而使得 Number.isInteger(5.0000000000000001) 返回 true

在类似的意义上,接近 Number.MAX_SAFE_INTEGER 大小的数值会因精度损失而使得 Number.isInteger 在传入值实际上不是整数的情况下返回 true。(实际阈值根据需要表示小数所需的位数而变化——例如,Number.isInteger(4500000000000000.1)true,但 Number.isInteger(4500000000000000.5)false。)

示例

使用 isInteger

js
Number.isInteger(0); // true
Number.isInteger(1); // true
Number.isInteger(-100000); // true
Number.isInteger(99999999999999999999999); // true

Number.isInteger(0.1); // false
Number.isInteger(Math.PI); // false

Number.isInteger(NaN); // false
Number.isInteger(Infinity); // false
Number.isInteger(-Infinity); // false
Number.isInteger("10"); // false
Number.isInteger(true); // false
Number.isInteger(false); // false
Number.isInteger([1]); // false

Number.isInteger(5.0); // true
Number.isInteger(5.000000000000001); // false
Number.isInteger(5.0000000000000001); // true,因为精度损失
Number.isInteger(4500000000000000.1); // true,因为精度损失

规范

Specification
ECMAScript Language Specification
# sec-number.isinteger

浏览器兼容性

BCD tables only load in the browser

参见