Javascript中的二次方程式无效

时间:2014-10-02 20:23:08

标签: javascript html

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

1度方程是否正确求解但我不能说二次方程式相同!!!所以这是我的代码:

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>

这是我的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)
    }
}

问题在于,当我使用该代码来解决二次方程式时,结果与我使用头部的结果不一样

3 个答案:

答案 0 :(得分:0)

当您从输入中获取值时,它们就是字符串。你需要它们是浮动的,这样你才能真正对它们进行操作:

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

答案 1 :(得分:0)

分部具有更高的优先级。你应该做

(-b+sD) / base 

(-b-sD) / base

例如(1 + 2) / 10 == 0.3 1 + 2 / 10 == 1.2

答案 2 :(得分:0)

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)
    }
}