JavaScript 中的二次方程求解器

Sta*_*ust 5 javascript

出于某种原因,当 a=1、b=1、c=-1 时,我没有得到 -1.6180339887499 和 0.61803398874989 的预期结果。相反,我得到 2 和 1。我做错了什么?

function solve(a,b,c){
    var result = (((-1*b) + Math.sqrt(Math.pow(b,2)) - (4*a*c))/(2*a));
    var result2 = (((-1*b) - Math.sqrt(Math.pow(b,2)) - (4*a*c))/(2*a));
    
    return result + "<br>" + result2;
}

document.write( solve(1,1,-1) );
Run Code Online (Sandbox Code Playgroud)

Nin*_*olz 6

您需要另一个分组:

var result = (((-1 * b) + Math.sqrt(Math.pow(b, 2)) - (4 * a * c)) / (2 * a));  // wrong
var result2 = (((-1 * b) - Math.sqrt(Math.pow(b, 2)) - (4 * a * c)) / (2 * a)); // wrong
Run Code Online (Sandbox Code Playgroud)

对比

var result = (-1 * b + Math.sqrt(Math.pow(b, 2) - (4 * a * c))) / (2 * a);      // right
var result2 = (-1 * b - Math.sqrt(Math.pow(b, 2) - (4 * a * c))) / (2 * a);     // right
Run Code Online (Sandbox Code Playgroud)

全部一起:

var result = (((-1 * b) + Math.sqrt(Math.pow(b, 2)) - (4 * a * c)) / (2 * a));  // wrong
var result2 = (((-1 * b) - Math.sqrt(Math.pow(b, 2)) - (4 * a * c)) / (2 * a)); // wrong
Run Code Online (Sandbox Code Playgroud)