2013-05-01 60 views
1

解决jQuery二次方程的代码有什么问题?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); 
} 

也许它的根,还是POW?请帮我弄清楚这一点,请

+0

作为一个说明,你可以结合你的'.fadeIn()'方法合并为一个语句:'$('#result1,#result2')。fadeIn('slow');'。 JavaScript控制台给你什么错误? – 2013-05-01 08:20:04

+0

这段代码运行时会发生什么?你有错误吗?你能提供一个使用jsfiddle的例子吗? – 97ldave 2013-05-01 08:23:34

+0

我得到这个代码的'不是数字'(NaN)。你看到一样吗? – WheretheresaWill 2013-05-01 08:29:35

回答

1

其简单的数学。 jQuery/Javascript在这方面贡献很少。

为jQuery的/ JavaScript部分:

确保#a, #b,#c有值当您运行的代码。即

$('#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,你不会得到任何真正的根源,即你会得到NaN的内部X1和X2

看到这个fiddle