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常に float を返します。if ステートメントは常に false です。

チェックを行いたい場合は、次のようにします。

$i = (int) $c;

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

これは float を int にキャストし、float$cと int$iが等しい場合は戻ります

于 2012-02-25T06:08:48.370 に答える
1

sqrtfloatではない を返すintため、関数は何も返しません。チェックを外すだけis_intですか?

于 2012-02-25T06:06:42.300 に答える
1

sqrtを返すためfloatis_intは常に false です。

本当に整数かどうかを確認したい場合は、次を使用できます。

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 に答える