Number.isSafeInteger()

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.isSafeInteger() 静态方法判断提供的值是否是一个安全整数

尝试一下

语法

js
Number.isSafeInteger(testValue)

参数

testValue

要测试是否为安全整数的值。

返回值

如果给定的值是一个安全整数,则返回布尔值 true。否则返回 false

描述

安全整数由 -(253 - 1) 到 253 - 1 的所有整数组成,包含(±9,007,199,254,740,991)。安全整数是符合以下条件的整数:

  • 可以精确地表示为 IEEE-754 双精度数,并且
  • 其 IEEE-754 表示形式不能是舍入任何其他整数以适应 IEEE-754 表示形式的结果。

例如,253 - 1 是一个安全整数:它可以精确地表示,并且在任何 IEEE-754 舍入模式下都没有其他整数舍入结果为该整数。相比之下,253 不是一个安全整数:它可以在 IEEE-754 中精确地表示,但整数 253 + 1 不能直接在 IEEE-754 中表示,而是采用就近舍入和向零舍入时,会舍入到 253

处理大约 9 千万亿左右的值时,需要使用任意精度算术库来实现完全精确性。有关浮点数表示的更多信息,请参阅程序员需要了解的浮点数算术知识

对于更大的整数,请考虑使用 BigInt 类型。

示例

使用 isSafeInteger()

js
Number.isSafeInteger(3); // true
Number.isSafeInteger(2 ** 53); // false
Number.isSafeInteger(2 ** 53 - 1); // true
Number.isSafeInteger(NaN); // false
Number.isSafeInteger(Infinity); // false
Number.isSafeInteger("3"); // false
Number.isSafeInteger(3.1); // false
Number.isSafeInteger(3.0); // true

规范

Specification
ECMAScript Language Specification
# sec-number.issafeinteger

浏览器兼容性

BCD tables only load in the browser

参见