Number.isSafeInteger()

Number.isSafeInteger() 静态方法确定提供的值是否是安全整数。

¥The Number.isSafeInteger() static method determines whether the provided value is a number that is a safe integer.

Try it

语法

¥Syntax

js
Number.isSafeInteger(testValue)

参数

¥Parameters

testValue

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

返回值

¥Return value

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

¥The boolean value true if the given value is a number that is a safe integer. Otherwise false.

描述

¥Description

安全整数由 -(253 - 1) 到 253 之间的所有整数组成 - 1,含(±9,007,199,254,740,991)。安全整数是这样的整数:

¥The safe integers consist of all integers from -(253 - 1) to 253 - 1, inclusive (±9,007,199,254,740,991). A safe integer is an integer that:

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

例如,253 - 1 是一个安全整数:它可以被精确表示,并且在任何 IEEE-754 舍入模式下没有其他整数舍入到它。相反,253 不是一个安全整数:它可以在 IEEE-754 中精确表示,但整数 253 + 1 不能直接在 IEEE-754 中表示,而是在 round- 下舍入为 253 舍入到最接近的舍入和舍入到零。

¥For example, 253 - 1 is a safe integer: it can be exactly represented, and no other integer rounds to it under any IEEE-754 rounding mode. In contrast, 253 is not a safe integer: it can be exactly represented in IEEE-754, but the integer 253 + 1 can't be directly represented in IEEE-754 but instead rounds to 253 under round-to-nearest and round-to-zero rounding.

以全精度处理大于或小于 9 千万亿的值需要使用 任意精度算术库。有关数字浮点表示的更多信息,请参阅 每个程序员都需要了解的浮点运算知识

¥Handling values larger or smaller than ~9 quadrillion with full precision requires using an arbitrary precision arithmetic library. See What Every Programmer Needs to Know about Floating Point Arithmetic for more information on floating point representations of numbers.

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

¥For larger integers, consider using the BigInt type.

示例

¥Examples

使用 isSafeInteger()

¥Using 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

¥Specifications

浏览器兼容性

BCD tables only load in the browser

¥Browser compatibility

也可以看看