算术运算符的不稳定行为
Erratic behavior of arithmetic operators
我有这个 JavaScript 程序,它可以根据用户输入(2 个数字,四个运算符之一 - +、-、/、*)进行非常简单的数学运算。问题是结果不稳定(可能不是最好的词,因为有一个模式,但领先于术语)我不知道为什么。
我所说的不稳定是指,例如,如果您首先对 5+5 求和,它将产生 10,正如预期的那样,但是如果您再次尝试对 5+6 求和,您将得到 12,如果您尝试对 5 +7 结果将是 14 依此类推...
关于为什么会发生这种情况有什么想法吗?这是代码:
<HEAD>
<h2>A simple JavaScript powered calculator</h2>
<INPUT value="Enter a number" id="input1"></INPUT>
<SELECT id = "operator">
<option id="choose" >choose </option>
<option id="sum" value="+">sum</option>
<option id="subtraction" value="-">subtraction</option>
<option id="division" value="/">division</option>
<option id="multiplication" value="*">multiplication</option>
</SELECT>
<INPUT value="Enter a number" id="input2"></INPUT>
<INPUT value= "calculate" type="button" onclick=result()></INPUT>
<INPUT id="outputfield" type="text"></INPUT>
</HEAD>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
function sum(number, number) {return number + number};
function subtraction(number, number) {return number - number};
function division(number, number) {return number / number};
function multiplication(number, number) {return number * number};
function result(){if (document.getElementById("operator").value === document.getElementById("sum").value) {console.log("its a +!"), document.getElementById("outputfield").value =
sum(parseInt(document.getElementById("input1").value), parseInt(document.getElementById("input2").value));}
else if (document.getElementById("operator").value === document.getElementById("subtraction").value) {console.log("its a -!"), document.getElementById("outputfield").value =
subtraction(parseInt(document.getElementById("input1").value), parseInt(document.getElementById("input2").value));}
else if (document.getElementById("operator").value === document.getElementById("division").value) {console.log("its a /!"), document.getElementById("outputfield").value =
division(parseInt(document.getElementById("input1").value), parseInt(document.getElementById("input2").value));}
else if (document.getElementById("operator").value === document.getElementById("multiplication").value) {console.log("its a *!"), document.getElementById("outputfield").value =
multiplication(parseInt(document.getElementById("input1").value), parseInt(document.getElementById("input2").value));}
else if (document.getElementById("operator").value === document.getElementById("choose").value) {console.log("please choose an operator");}
}
</SCRIPT>
<p> </>
<p> April 2016 </p>
</BODY>
提前感谢任何提示
你的函数,例如:
function sum(number, number) {return number + number};
在两个参数中使用相同的名称,即 number
,当您尝试添加 5 和 6 时,名称 number
被分配值 6
,因为 6 + 6 = 12
结果正确
试试这个:
function sum(number1, number2) {return number1 + number2};
我有这个 JavaScript 程序,它可以根据用户输入(2 个数字,四个运算符之一 - +、-、/、*)进行非常简单的数学运算。问题是结果不稳定(可能不是最好的词,因为有一个模式,但领先于术语)我不知道为什么。
我所说的不稳定是指,例如,如果您首先对 5+5 求和,它将产生 10,正如预期的那样,但是如果您再次尝试对 5+6 求和,您将得到 12,如果您尝试对 5 +7 结果将是 14 依此类推...
关于为什么会发生这种情况有什么想法吗?这是代码:
<HEAD>
<h2>A simple JavaScript powered calculator</h2>
<INPUT value="Enter a number" id="input1"></INPUT>
<SELECT id = "operator">
<option id="choose" >choose </option>
<option id="sum" value="+">sum</option>
<option id="subtraction" value="-">subtraction</option>
<option id="division" value="/">division</option>
<option id="multiplication" value="*">multiplication</option>
</SELECT>
<INPUT value="Enter a number" id="input2"></INPUT>
<INPUT value= "calculate" type="button" onclick=result()></INPUT>
<INPUT id="outputfield" type="text"></INPUT>
</HEAD>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
function sum(number, number) {return number + number};
function subtraction(number, number) {return number - number};
function division(number, number) {return number / number};
function multiplication(number, number) {return number * number};
function result(){if (document.getElementById("operator").value === document.getElementById("sum").value) {console.log("its a +!"), document.getElementById("outputfield").value =
sum(parseInt(document.getElementById("input1").value), parseInt(document.getElementById("input2").value));}
else if (document.getElementById("operator").value === document.getElementById("subtraction").value) {console.log("its a -!"), document.getElementById("outputfield").value =
subtraction(parseInt(document.getElementById("input1").value), parseInt(document.getElementById("input2").value));}
else if (document.getElementById("operator").value === document.getElementById("division").value) {console.log("its a /!"), document.getElementById("outputfield").value =
division(parseInt(document.getElementById("input1").value), parseInt(document.getElementById("input2").value));}
else if (document.getElementById("operator").value === document.getElementById("multiplication").value) {console.log("its a *!"), document.getElementById("outputfield").value =
multiplication(parseInt(document.getElementById("input1").value), parseInt(document.getElementById("input2").value));}
else if (document.getElementById("operator").value === document.getElementById("choose").value) {console.log("please choose an operator");}
}
</SCRIPT>
<p> </>
<p> April 2016 </p>
</BODY>
提前感谢任何提示
你的函数,例如:
function sum(number, number) {return number + number};
在两个参数中使用相同的名称,即 number
,当您尝试添加 5 和 6 时,名称 number
被分配值 6
,因为 6 + 6 = 12
结果正确
试试这个:
function sum(number1, number2) {return number1 + number2};