2016-11-16 123 views
0

我刚刚开始学习JavaScrpt并试图制作代码来计算数学公式,但它不能按我的预期工作。这是我正在处理的代码。当我运行代码时,如果我在B 3中输入2并且使用公式B^2 - 4 * A * C在C中输入4,则它应返回-23,但返回-31。有更多有经验的人可以看看并告诉我我的错误在哪里?JavaScript计算不正确

<html> 
 
<head> 
 
</head> 
 
<body> 
 

 
    <form id="reshenie" action=""> 
 
    <fieldset> 
 
     <p> 
 
     <label for="A">a</label> 
 
     <input id="A" name="A" type="number" /> 
 
     </p> 
 
     <p> 
 
     <label for="B">b</label> 
 
     <input id="B" name="B" type="number" /> 
 
     </p> 
 
     <p> 
 
     <label for="C">c</label> 
 
     <input id="C" name="C" type="number" /> 
 
     </p> 
 
     <p> 
 
     <input type="submit" value="submit" /> 
 
     <input type="reset" value="reset" /> 
 
     </p> 
 
     <p> 
 
     <label for="result">result</label> 
 
     <input id="result" name="result" type="number" /> 
 
     </p> 
 
    </fieldset> 
 
    </form> 
 

 

 
    <script> 
 

 
    (function() { 
 
\t function presmqtane(A,B,C) { 
 
\t \t A = parseFloat(A); 
 
\t \t B = parseFloat(B); 
 
\t \t C = parseFloat(C); 
 
\t return (B^2 - 4 * A * C); 
 
\t } 
 

 
\t var reshenie = document.getElementById("reshenie"); 
 
\t if (reshenie) { 
 
\t \t reshenie.onsubmit = function() { 
 
\t \t \t this.result.value = presmqtane(this.A.value, this.B.value, this.C.value); 
 
\t \t \t return false; 
 
\t \t }; 
 
\t } 
 

 
    }()); 
 

 
    </script> 
 

 
</body> 
 
</html>

+3

'^'不是指数。 – ASDFGerte

+1

您正在寻找'Math.pow()'作为指数:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/pow – David

回答

3

欢迎的StackOverflow!我猜,当你写了这个:

return (B^2 - 4 * A * C); 

您的意思是:

return (Math.pow(B, 2) - 4 * A * C); 

^符号是XOR运营商,而不是幂。没有这个符号,只有Math.pow()

另请注意,JavaScript中的变量名通常写成小写。我会用a,b,c而不是A,B,C(它传统上代表类而不是对象)。这也与数学标准(我假设这是二次封闭方程)一起玩,其中大写字母通常表示比数字更复杂的对象,如矩阵或图形。

+1

有一个符号指数在即将推出的ECMAScript版本中:'**'。 – Xufox

1

这应该工作,只要你想:

return (Math.pow(B, 2) - 4 * A * C);