【问题标题】:Erratic behavior of arithmetic operators算术运算符的不稳定行为
【发布时间】:2016-08-08 02:31:07
【问题描述】:

我有这个 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>

提前感谢任何提示

【问题讨论】:

  • 是的。你认为函数会返回什么?这没有任何意义。如果a 是5 而a 是2,那么a + a 是什么? 10? 4?
  • 老实说,这是我一整天看到的最有趣的事情。
  • @SverriM.Olsen,该睡觉了 :) 感谢您费心指出显而易见的事情 :)

标签: javascript arithmetic-expressions


【解决方案1】:

你的函数,例如:

function sum(number, number) {return number + number};

在两个参数中使用相同的名称,即number,当您尝试将 5 和 6 相加时,名称 number 被分配值 6,并且由于 6 + 6 = 12,结果是正确的。

试试这个:

function sum(number1, number2) {return number1 + number2};

【讨论】:

  • 再次感谢您让我免于讽刺;)显然这里有些人认为每个人都是经验丰富的程序员!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-07
  • 1970-01-01
  • 2012-10-10
  • 1970-01-01
  • 1970-01-01
  • 2015-09-17
相关资源
最近更新 更多