2012-02-25 13 views
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 
?> 

ありがとう!

答えて

1

sqrtは、intではないfloatを返します。したがって、関数は何も返しません。小切手をis_intのままにしておきますか?

+0

hmm..Iは、この問題の整数であるものC 'のみ '$が必要です。しかし、私は単純な 'if($ c - round($ c)== 0)'がそのトリックを行うと思います。ありがとう! –

3

sqrtは常に浮動小数点数を返します。 if文は常にfalseです。これはintにfloat型にキャストされない何

$i = (int) $c; 

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

を、フロート$cとint型$iが等しい場合、それは

を返します。

あなたがチェックを行いたい場合は、これを行いますタイプミスがあなたの結果である

0

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

echo pythThm(3, 4); 
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 

?> 
+0

これは整数であろうとなかろうと、すべての値を整数として返します。 –

+1

'is_int()'チェックは必要ありません。 '$ c'をint型にキャストしているので、常にtrueになります。 –

1

sqrtfloatを返します。そのため、is_intは常にfalseです。

あなたが本当にそれが整数だ場合、あなたが使用することができます確認したい場合は、次の

if ((int)$c == $c) 
    return $c; 
+0

最初のコメントを見ても同様のチェックができました。ありがとう! –