PHP代码返回“x = NAN”

时间:2015-07-04 05:49:48

标签: php

我的代码是:

$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

请指出我的错误。

3 个答案:

答案 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;

请检查您的论点