如何在 JavaScript 中檢查兩個數字是否近似相等?


在本教程中,我們將檢查兩個數字是否近似相等。如果給定的兩個數字相等,我們將列印“yes”,否則列印“no”。

但我要說明的是,我們不會在這裡做任何魔法,基本上我們還需要給出一個 epsilon 值。

因此,當我們計算這兩個數字之間的絕對差,然後與 epsilon 進行比較時,如果絕對差小於 epsilon,則這兩個數字近似相等,否則近似不相等。

假設給定的兩個數字是 6.79 和 6.75,epsilon 為 0.05,那麼我們首先計算絕對差,結果為 abs(6.79-6.75)=0.04,小於 epsilon 值,因此這兩個數字近似相等。

你可能想知道為什麼是絕對值?

這是因為,如果我們從較小的值中減去較大的值,那麼差值將為負數,這將不會給出預期的結果。因此,透過取絕對值,我們可以避免這個問題。

讓我們來看一些例子

Input:
   Value1= 2.03
   Value2= 2.01
   Epsilon= 0.01
Output:
   Approximately NOT equal

當我們計算這兩個數字之間的絕對差時,它將是 0.02,而給定的 epsilon 值是 0.01,因此我們的絕對差大於 epsilon 值,所以它們近似不相等。

語法

以下是檢查兩個數字是否近似相等的語法/虛擬碼:

Const difference= Math.abs(val1-val2);
if(difference<epsilon){
   approximately equal
} else {
   Aapproximately NOT equal
}

演算法

  • 步驟 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>

請使用不同的 number 1 和 number 2 值進行檢查。嘗試在不輸入任何數字或兩個數字的情況下進行檢查。由於我們在 epsilon 中給出了預設值 1.5,因此如果使用者不輸入,它將使用該值工作。

因此,我們看到了檢查兩個數字是否近似相等的方法。

更新於:2022年7月26日

569 次瀏覽

啟動你的 職業生涯

完成課程獲得認證

開始學習
廣告