如何在 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,因此如果用户不输入,它将使用该值工作。
因此,我们看到了检查两个数字是否近似相等的方法。
数据结构
网络
关系型数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP