我写了一段代码来执行二次方程:
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.关于如何解决这个问题以便获得实际数字输出的任何想法?
$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.
除此之外,您的公式对于二次方程是正确的.