如何在 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,因此如果使用者不輸入,它將使用該值工作。
因此,我們看到了檢查兩個數字是否近似相等的方法。