Javascript中的二次方程不起作用

Javascript中的二次方程不起作用,javascript,html,Javascript,Html,我创建了一个带有2个按钮的html页面。 一次方程一个,二次方程一个。 我有三种形式的a b和c(二次方程) 一次方程的解是正确的,但二次方程的解是不一样的!!!这是我的代码: HTML: <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>Equations</title> <script src="http://code.jquery.c

我创建了一个带有2个按钮的html页面。 一次方程一个,二次方程一个。 我有三种形式的a b和c(二次方程)

一次方程的解是正确的,但二次方程的解是不一样的!!!这是我的代码:

HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
    <title>Equations</title>
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<link rel="stylesheet" type="text/css" href="../../css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="../../css/bootstrap-theme.min.css">


</head>
<body class="bg-info">
<div class="container">
    <div class="jumbotron text-center h1">
        Choose the type of equation you want and press =
    </div>
    <div class="btn btn-block btn-success" onclick="$('.a').show();$('#c').hide()"> 1st degree</div>
    <div class="btn btn-block btn-info" onclick="$('.a,#c').show();">Quadratic</div>
    <input type="text" id="a" class="a b">
    <input type="text" id="b" class="a b">
    <input type="text" id="c">
    <div class="btn btn-info" onclick="equationType()">=</div>
</div>
</body>
</html>
HTML:
方程
选择所需方程式的类型,然后按=
一级
二次的
=
下面是我的Javascript:

function quadratic(){
    var a=$("#a").val();
    var b=$("#b").val();
    var c=$("#c").val();
    var D=b*b - 4 * a * c;
    var base = 2 * a;
    var sD=Math.sqrt(D);
    if (D < 0) {
        alert("Can't be solved")
    }
    else if (D === 0){
        var dx=(b*(-1)) / (2 * a);
        alert("Double solution:"+dx)
    }
    else{
    var x1=-b+sD / base;
    var x2=-b-sD / base;
    alert("X1: "+x1+"  X2: "+x2)
    }
}
函数二次(){
var a=$(“#a”).val();
var b=$(“#b”).val();
var c=$(“#c”).val();
变量D=b*b-4*a*c;
var基数=2*a;
var sD=数学sqrt(D);
if(D<0){
警报(“无法解决”)
}
else如果(D==0){
var dx=(b*(-1))/(2*a);
警报(“双重解决方案:+dx)
}
否则{
变量x1=-b+sD/基准;
var x2=-b-sD/基准;
警报(“X1:+X1+”X2:+X2)
}
}

问题是,当我使用该代码求解二次方程时,结果与我使用头部得到的结果不同。当你从输入中得到值时,它们是字符串。您需要将其设置为浮动,以便实际操作:

var a = parseFloat($("#a").val());
var b = parseFloat($("#b").val());
var c = parseFloat($("#c").val());

该司具有更高的优先地位。你应该这样做

(-b+sD) / base 

例如,
(1+2)/10==0.3
,而
1+2/10==1.2
最后的问题是除法,因此:
Finally division was the problem so here it is:
function quadratic(){
    var a=$("#a").val();
    var b=$("#b").val();
    var c=$("#c").val();
    var D=b*b - 4 * a * c;
    var base = 2 * a;
    var sD=Math.sqrt(D);
    if (D < 0) {
        alert("Can't be solved")
    }
    else if (D === 0){
        var dx=(b*(-1)) / (2 * a);
        alert("Double solution:"+dx)
    }
    else{
    var x1=(-b+sD) / base;
    var x2=(-b-sD) / base;
    alert("X1: "+x1+"  X2: "+x2)
    }
}
二次函数(){ var a=$(“#a”).val(); var b=$(“#b”).val(); var c=$(“#c”).val(); 变量D=b*b-4*a*c; var基数=2*a; var sD=数学sqrt(D); if(D<0){ 警报(“无法解决”) } else如果(D==0){ var dx=(b*(-1))/(2*a); 警报(“双重解决方案:+dx) } 否则{ var-x1=(-b+sD)/base; var x2=(-b-sD)/基准; 警报(“X1:+X1+”X2:+X2) } }
请添加更多有关它不工作时发生的情况的信息。是否存在错误或您得到的值不正确。你做了什么来处理这个问题呢?先不考虑这个问题一分钟,我会注意到得到D的平方根,然后检查D<0的顺序是否正确。如果D>0,你只需要得到D的平方根,所以至少在最后一行之后移动那一行。不确定你在问什么。我假设你得到了某种回应,但你不确定这是不是正确的。。。?最好的办法是通过手动找出正确答案来测试你的应用程序,然后看看应用程序是否也这样做??不,二次方程的结果不是预期的。我尝试用我的代码和我的手解同一个方程,结果完全不同。在这种情况下,我建议你逐步完成代码逐行检查,看看哪里出了问题。不确定还有什么问题,但这肯定是问题的一部分
Finally division was the problem so here it is:
function quadratic(){
    var a=$("#a").val();
    var b=$("#b").val();
    var c=$("#c").val();
    var D=b*b - 4 * a * c;
    var base = 2 * a;
    var sD=Math.sqrt(D);
    if (D < 0) {
        alert("Can't be solved")
    }
    else if (D === 0){
        var dx=(b*(-1)) / (2 * a);
        alert("Double solution:"+dx)
    }
    else{
    var x1=(-b+sD) / base;
    var x2=(-b-sD) / base;
    alert("X1: "+x1+"  X2: "+x2)
    }
}