如何在JavaScript中判断一个数字是否为安全整数?


JavaScript 提供了一个 `Number.isSafeInteger()` 方法来检查给定的数字是否为安全整数。如果整数是安全的,则返回 `true`,否则返回 `false`。

JavaScript 对数字有一些限制,任何数字都应该符合 SCNF(标准计算机网络格式)。如果数字违反了规则,则它不是安全整数。

之所以存在此限制,是因为JavaScript 使用 `IEEE 754` 标准中指定的双精度浮点数格式,并且只能安全地表示介于 `−(2^53-1)` 和 `(2^53-1)` 之间的整数。

示例 1

在下面的示例中,我们检查两个数字是否安全。number1 超出了范围,即不安全,输出结果为 `false`。number2 在范围内,即安全,输出结果为 `true`。

<!DOCTYPE html>
<html>
<body>
   <script>
      const number1 = Number.isSafeInteger(-Math.pow(2,53)-3);
      document.write(number1 + "<br>");

      const number2 = Number.isSafeInteger(-253);
      document.write(number2);
   </script>
</body>
</html>

示例 2

在下面的示例中,我们传递一个整数数组,并检查给定元素是否安全。

<!DOCTYPE html>
<html>
<body>
   <script>
      const arr = [15, 20, 30, 40, -100, -500];
      document.write("{");
      for (let index = 0; index < arr.length; index++) {
         document.write(Number.isSafeInteger(arr[index]) + " ");
      }
      document.write("}");
   </script>
</body>
</html>

示例 3

在下面的示例中,不支持浮点型数据类型。如果将浮点值作为参数传递,则结果为 `false`。`isSafeInteger()` 方法只支持其范围内的整数值,否则返回 `false`。

<html>
<body>
   <script>
      const number1 = Number.isSafeInteger(-0.567);
      document.write(number1 + " ");

      const number2 = Number.isSafeInteger(-253.0345);
      document.write(" " + number2 + " ");

      const number3 = Number.isSafeInteger(5.583);
      document.write(" " + number3);

      const number4 = Number.isSafeInteger(0 / 0);
      document.write(" " + number4 + " ");

      const number5 = Number.isSafeInteger(6 - 2);
      document.write(" " + number5 + " ");

      const number6 = Number.isSafeInteger(0);
      document.write(" " + number6);
   </script>
</body>
</html>

更新于:2022年12月6日

220 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告