1

我求解 jQuery 二次方程的代码有什么问题?

a = parseFloat($('#a').val());
b = parseFloat($('#b').val());
c = parseFloat($('#c').val());
root = Math.sqrt(Math.pow(b, 2) - (4 * a * c));
x1 = (-b + root) / 2 * a;
x2 = (-b - root) / 2 * a;

function validateForm(){
            $('#result1').fadeIn('slow');
            $('#result2').fadeIn('slow');
            $('#result1').html('First ans equal' + x1);
            $('#result2').html('Second ans equal' + x2);
}

也许它的根,或战俘?请帮我解决这个问题

4

1 回答 1

1

它的简单数学。jQuery/Javascript 在这方面几乎没有什么贡献。

对于 jquery/Javascript 部分:

确保#a, #b,#c在运行代码时具有值。IE

 $('#a').val() = some valid Float text

在这方面您可以做的一件事是将变量包装a,b,c在函数中。

并在单击某个按钮时调用该函数,或者仅在您确定#a, #b,#c具有价值之后调用该函数。

见下图:

var x1,x2;
function calculate(){

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

     root = Math.sqrt(Math.pow(b, 2) - (4 * a * c));

     x1 = (-b + root) / 2 * a;
     x2 = (-b - root) / 2 * a;
}

$('#validate').on("click",function(){
     calculate();
    $('.result').html('').append('first answer'+x1).append('second answer'+x2);
}); 

数学部分

只要你的二次方程有有理根,它就可以正常工作。即,如果你给你
coefficients(a,b,c)一个值,你的二次方程没有有理根,在这种情况下你会得到NaN你的 x1 和 x2,因为你得到的结果不是实数而是复数。

所以每次Math.pow(b, 2) - (4 * a * c) < 0,你都不会得到任何真正的根,即你会在 x1 和 x2 中得到 NaN

看到这个小提琴

于 2013-05-01T08:30:15.977 回答