PHP sqrt()返回NAN

Avi*_*X14 4 php nan

我写了一段代码来执行二次方程:

function quadratic($a,$b,$c) {
    $mb = $b - ($b*2);
    $bs = $b * $b;
    $fac = ($a * $c) * 4;

    $ans1 = ($mb + sqrt(($bs - $fac))) / (2 * $a);
    $ans2 = ($mb - sqrt(($bs - $fac))) / (2 * $a);

    echo ("Your <b>+</b> value is: " . $ans1 . "<br />");
    echo ("Your <b>-</b> value is: " . $ans2);
}
Run Code Online (Sandbox Code Playgroud)

问题是,如果例如a = 2,b = 4,c = 8,则两个答案都输出为NAN.关于如何解决这个问题以便获得实际数字输出的任何想法?

thu*_*eys 7

   $a * $c * 4 = 64
   $bs = 4 * 4 = 16
   sqrt(($bs - $fac))) = sqrt(-48)
Run Code Online (Sandbox Code Playgroud)

你不能取负数的sqrt,它没有定义,因此结果是NaN.

此外,您的公式可以简化为:

 $mb = $b - ($b*2) = -$b
Run Code Online (Sandbox Code Playgroud)

所以$mb你的instad 可以简单地使用-$b.

除此之外,您的公式对于二次方程是正确的.