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 2015年9月.
Number.isSafeInteger() 静态方法判断提供的值是否是一个安全整数。
尝试一下
function warn(x) {
  if (Number.isSafeInteger(x)) {
    return "Precision safe.";
  }
  return "Precision may be lost!";
}
console.log(warn(Math.pow(2, 53)));
// Expected output: "Precision may be lost!"
console.log(warn(Math.pow(2, 53) - 1));
// Expected output: "Precision safe."
语法
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® 2026 Language Specification> # sec-number.issafeinteger>  | 
            
浏览器兼容性
Loading…