如何在 JavaScript 中检查两个数字是否大致相等?

front end technologyjavascriptweb development

在本教程中,我们将检查两个数字是否大致相等。如果给定的两个数字相等,则我们将打印"是",否则"不是"。

但让我明确地告诉你,我们不会在这里做任何魔术,基本上我们还必须给出一个 epsilon 值。

因此,当我们计算这两个数字之间的绝对差,然后与 epsilon 进行比较时,如果绝对差小于 epsilon,则数字近似相等,否则不近似相等。

假设给定的两个数字是 6.79 和 6.75,而 epsilon 为 0.05,因此我们首先计算绝对差,其结果为 abs (6.79-6.75)=0.04,小于 epsilon 值,因此数字近似相等。

你可能会想为什么是绝对的?

因此,如果我们要减去的第一个值是最小值,而我们要减去的值是最小值,那么在这种情况下差异将为负数,并且不会产生所需的输出。因此,通过取绝对值,我们可以摆脱这个问题。

让我们举几个例子

输入:
   Value1= 2.03
   Value2= 2.01
   Epsilon= 0.01
输出:
   近似不相等

当我们计算两个数字之间的绝对差时,它将是 0.02,而给出的 epsilon 值是 0.01,所以我们的绝对差大于 epsilon 值,所以它不是近似相等。

语法

以下是检查两个数字是否近似相等的语法/伪代码 -

Const difference= Math.abs(val1-val2);
if(difference<epsilon){
   近似相等
} else {
   近似不相等
}

算法

  • 步骤 1 - 从用户那里输入两个数字和 epsilon 值。将这些值分别分配给变量 val1、val2、epsilon。
  • 步骤 2 - 计算两个数字 val1 和 val2 之间的绝对差。将此差值分配给变量 difference。
  • 步骤 3 - 检查 difference 是否小于 epsilon。如果为真,则显示正确的消息,表明两个数字大致相等。如果为假,则显示正确的消息,表明数字不大致相等。

示例 1

让我们将函数代码嵌入到 HTML 代码中以检查现实世界的工作情况。尝试输入不同的数字和 epsilon 值来检查不同的情况。

<!DOCTYPE html>
<html>
<body>
   <h1>Approximately Equal?</h1>
   <input type="number" id="val1" placeholder="Enter number1.." /><br><br>
   <input type="number" id="val2" placeholder="Enter number2.." /><br><br>
   <input type="number" id="epsilon" placeholder="Enter max epsilon.." /><br><br>
   <input type="button" value="IsEqual?" onClick="checkIf_approx_equal()" style="color: blue; margin-left: 35px;"/>
   <h2 id="writeHere"></h2>
   <script>
      function checkIf_approx_equal(){
         var val1=document.getElementById("val1").value
         var val2=document.getElementById("val2").value
         var epsilon=document.getElementById("epsilon").value
         var difference= Math.abs(val1-val2);
         console.log(difference)
         if(difference<epsilon){
            document.getElementById('writeHere').innerHTML="Yes Approximately Equal"
         } else {
            document.getElementById('writeHere').innerHTML="No Approximately NOT Equal"
         }
      }
   </script>
</body>
</html>

我们还可以定义我们的 epsilon 假设,如果用户不想提供任何 epsilon 值,那么我们必须取一个 epsilon 值并检查用户是否输入了这两个值,因为必须提供这两个数字。

示例 2

在下面的程序中,我们检查数字是否大致相等。我们优化了代码,如果用户没有输入任何或两个数字,则显示消息。

<!DOCTYPE html>
<html>
<body>
   <h1>Approximately Equal?</h1>
   <input type="number" id="val1" placeholder="Enter number1.." /><br><br>
   <input type="number" id="val2" placeholder="Enter number2.." /><br><br>
   <input type="number" id="epsilon" placeholder="Enter max epsilon.." /><br><br>
   <input type="button" value="IsEqual?" onClick="checkIf_approx_equal()" style="color: blue; margin-left: 35px;"/>
   <h2 id="writeHere"></h2>
   <script>
      function checkIf_approx_equal(){
         var val1=document.getElementById("val1").value
         var val2=document.getElementById("val2").value
         var epsilon=document.getElementById("epsilon").value

         if(!val1){
            document.getElementById('writeHere').innerHTML="Please enter a value in first Box"
            return;
         }
         if(!val2){
            document.getElementById('writeHere').innerHTML="Please enter a value in second Box"
            return;
         }
         if(!epsilon) epsilon=1.5

         var difference= Math.abs(val1-val2);
         console.log(difference)
         if(difference<epsilon){
            document.getElementById('writeHere').innerHTML="Equal"
         } else {
            document.getElementById('writeHere').innerHTML="Not Equal"
         }
      }
   </script>
</body>
</html>

请检查数字 1 和数字 2 的不同值。尝试在不输入任何数字或两个数字的情况下进行检查。由于我们在 epsilon 中给出了默认值 1.5,以防用户不输入,因此它将使用该值工作。

因此,我们看到了检查两个数字是否大致相等的方法。


相关文章