我的代码解决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);
}
也许它的根源还是战俘?请帮我解决这个问题
答案 0 :(得分: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)
一个值,即你的二次方程没有理性根,在这种情况下,你将在x1和x2中得到NaN
,因为你得到的结果不是实数而是复数。 / p>
所以每次Math.pow(b, 2) - (4 * a * c) < 0
,你都不会得到任何真正的根,即你将在x1和x2中获得NaN
请参阅此fiddle