如何在JavaScript中将值转换为安全整数?


如果一个整数可以精确地表示为IEEE-754双精度数,则称其为安全整数。安全整数的范围是-(2^53 - 1) 到 (2^53 - 1)。所有这些数字都被认为是安全整数,因为它允许在数学整数及其在JavaScript中的表示之间进行一对一的映射。



语法

使用以下语法检查安全整数:

Number.isSafeInteger(testValue)

这里testValue 是要检查的数字,判断其是否为安全整数。

如果testValue是安全整数,则返回true;否则返回false。

示例

检查数字是否为安全整数

我们可以使用isSafeInteger()函数来检查一个数字是否为安全整数,如下例所示。

<html>
<body>
   <p id="first"> </p>
   <p id="second"> </p>
   <p id="third"> </p>
   <script>
      //var number= 3;
      let result1=Number.isSafeInteger(3);
      let result2=Number.isSafeInteger(3.2);
      let result3=Number.isSafeInteger(Math.pow(2, 53));

      document.getElementById("first").innerHTML = result1;
      document.getElementById("second").innerHTML = result2;
      document.getElementById("third").innerHTML = result3;
   </script>
</body>
</html>

在输出中,我们可以看到数字3的结果为true,数字3.2和2^53的结果为false。

注意 − Number.isSafeInteger()函数是ECMAScript6 (ES6)的功能,因此除了Internet Explorer 11或更早版本之外,所有现代浏览器都支持它。

算法(将数字转换为安全整数)

要将数字转换为安全整数,我们接收任何非安全整数作为输入,并将其转换为安全数字。

  • 步骤1 − 将输入的非安全整数存储到名为“number”的变量中。

  • 步骤2 − 查找该数字的最大安全整数。要查找最大安全整数,我们使用MAX_SAFE_INTEGER函数,并将其存储到名为“max”的变量中。

  • 步骤3 − 查找上述计算出的最大安全整数max的最小安全整数。要查找最小安全整数,我们使用MIN_SAFE_INTEGER函数,并将其存储到名为“min”的变量中。

  • 步骤4 − 对值min进行四舍五入,并将其存储到名为“safeInt”的变量中。

以下是上述步骤的代码片段:

const number = prompt('Please enter any unsafe integer:');
var max = Math.min(number, Number.MAX_SAFE_INTEGER);
var min = Math.max(max, Number.MIN_SAFE_INTEGER);
const safeInt = Math.round(min);

示例2

我们可以使用以下示例将数字转换为安全整数:

<!DOCTYPE html>
<html>
<body>
   <h3> Convert a Number to a Safe Integer </h3>
   <p class="1"> Click the button below to take an integer as input and convert it to a safe integer.</p>
   <button onclick="check()">click me</button>
   <p id="2"></p>
   <script>
      function check(){
         const number = prompt('Please enter any unsafe integer:');
         var max = Math.min(number,Number.MAX_SAFE_INTEGER);
         var min = Math.max(max,Number.MIN_SAFE_INTEGER);
         const safeInt = Math.round(min);
         document.getElementById("2").innerHTML = number + " => " + safeInt;
      }
   </script>
</body>
</html>

如输出窗口所示,单击“点击我”按钮后,窗口将提示您输入任何非安全整数。

在提示框中输入任何非安全整数后,您将看到它被转换为安全整数,例如,我们将非安全数字6.2作为示例。

更新于:2022年7月21日

420 次浏览

启动您的职业生涯

通过完成课程获得认证

开始学习
广告