我的代码是:
$a = $_GET["valA"];
$b = $_GET["valB"];
$c = $_GET["valC"];
$d = pow($b,2) - 4 * $a * $c;
$e = sqrt($d);
$f = $e - $b;
$g = 2 * $a;
$h = $f / $g;
echo "x = $h";
它正在回归:
x = NAN
请指出我的错误。
答案 0 :(得分:1)
NAN 仅表示非数字。您从URL中提取的值可能是字符串,这会导致此问题。
此外,我认为如果你采用负数的平方根可能会出现问题。
您可以使用类似的东西来解决它
<?php
$a = 10;
$b = 20;
$c = 30;
$d = pow($b,2) - 4 * $a * $c;
if($d < 0){
$d *= -1;
}
$e = sqrt($d);
$f = $e - $b;
$g = 2 * $a;
$h = $f / $g;
?>
答案 1 :(得分:1)
问题出在$e = sqrt($d);
每当$d
给出一个NEGATIVE值sqrt($d)
时,返回NAN。
示例
echo $e = sqrt(-4);
returns NAN
和
echo $e = sqrt(4);
returns 2
答案 2 :(得分:0)
根据您的问题,如果我指定以下值
$a = 100;
$b = 2;
$c = 3;
$d = pow($b,2) - 4 * $a * $c; //this will return negative value
$e = sqrt($d);
$f = $e - $b;
$g = 2 * $a;
$h = $f / $g;
echo 'd =' .$d.'<br>';
echo 'e =' .$e.'<br>';
echo 'f =' .$f.'<br>';
echo 'g =' .$g.'<br>';
echo 'h =' .$h.'<br>';
所以输出将是
d =-1196
e =NAN
f =NAN
g =200
h =NAN
如果我将 $e = sqrt($d);
分配给$e = sqrt(15);
,您会得到一些像
d =-1196
e =3.8729833462074
f =1.8729833462074
g =200
h =0.0093649167310371
//now all working
问题出在$d = pow($b,2) - 4 * $a * $c;
请检查您的论点