0

我不确定我错过了什么,但我无法$c正确输出。

<?php

function pythThm($a, $b){
    $a2 = pow($a, 2);
    $b2 = pow($b, 2);
    $c = sqrt($a2 + $b2);
    if(is_int($c)){return $c;}
}

echo pythThm(3, 4);
//outputs nothing, should be 5

?>

我为初学者的问题道歉。

问题解决方案:

<?php
function pythThm($a, $b){
$a2 = pow($a, 2);
$b2 = pow($b, 2);
$c = sqrt($a2 + $b2);
if($c - round($c) == 0){return $c;}
}

echo pythThm(4, 4); 
//returns nothing
echo pythThm(3,4);
//returns 5
?>

感谢所有回答的人...下次我一定会阅读有关该功能的完整信息!

4

5 回答 5

3

sqrt总是返回一个浮点数。你的 if 语句总是错误的。

如果要进行检查,请执行以下操作:

$i = (int) $c;

if($c == $i) return $c

这样做是将浮点数转换为 int,如果浮点数$c和 int$i相等,则它将返回

于 2012-02-25T06:08:48.370 回答
1

sqrt返回 a float,它不是 a int,因此您的函数不返回任何内容。就不用is_int支票了吗?

于 2012-02-25T06:06:42.300 回答
1

sqrt返回 a float,这就是为什么is_int总是假的。

如果你真的想检查它是否是一个整数,你可以使用:

if ((int)$c == $c)
    return $c;
于 2012-02-25T06:11:27.503 回答
0

这是你的结果中的错字

function pythThm($a, $b){
    $a2 = pow($a, 2);
    $b2 = pow($b, 2);
    $c = sqrt($a2 + $b2);
    return (int)$c;
}

echo pythThm(3, 4);
于 2012-02-25T06:09:20.693 回答
0
<?php

function pythThm($a, $b){
    $a2 = pow($a, 2);
    $b2 = pow($b, 2);
    $c =  sqrt($a2 + $b2);
   return $c;
}

echo pythThm(3, 4);
//outputs nothing, should be 5

?>
于 2012-02-25T06:10:03.513 回答