如何在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作为示例。