**
Number.isInteger() 主要用来判断一个数值是否为整数
**
- 整数和浮点数采用的是同样的储存方法,所以 14 和 14.0 被视为同一个值。
Number.isInteger(14) // true
Number.isInteger(14.0) // true
- 如果参数不是数值,Number.isInteger返回false。
Number.isInteger() // false
Number.isInteger(true) // false
Number.isInteger(null) // false
Number.isInteger('14') // false
- 由于 JavaScript 采用 IEEE 754 标准,数值存储为64位双精度格式,数值精度最多可以达到 53 个二进制位(1个隐藏位与 52个有效位)。如果数值的精度超过这个限度,第54位及后面的位就会被丢弃,这种情况下,Number.isInteger可能会误判。
Number.isInteger(3.0000000000000002) // true
//这个小数的精度达到了小数点后16个十进制位,转成二进制位超过了53个二进制位,导致2被丢弃了
- 如果一个数值的绝对值小于 JavaScript能够分辨的最小值(5E-324),会被自动转为0。此时,Number.isInteger也会误判。
Number.isInteger(5E-324) // false
Number.isInteger(5E-325) // true
- 因此,如果对数据精度的要求较高,不建议使用Number.isInteger()判断一个数值是否为整数。