2012-02-25 5 views
0

내가 무엇이 빠졌는지 잘 모르겠지만, 정확히 출력하려면 $c을 얻을 수 없습니다.함수가 반환합니다 : PHP

<?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

sqrtint이 아니므로 float을 반환하므로 함수가 아무 것도 반환하지 않습니다. 수표를 is_int에서 그냥 남겨 두시겠습니까?

+0

hmm..I 만'$이 문제에 대한 정수 것들 c' 필요는 없다. 그러나, 간단한 if ($ c - round ($ c) == 0)가이 트릭을 수행 할 것이라고 생각합니다. 감사! –

3

sqrt은 항상 float를 반환합니다. if 문은 항상 거짓입니다. 이 int로 플로트를 캐스팅 무엇

$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 형으로 캐스팅했기 때문입니다 ... –

1

sqrtfloat을 반환하므로 is_int은 항상 false입니다.

당신이 정말로 그것을 정수인지 확인하려면

, 당신은 사용할 수 있습니다

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

예, 첫 번째 주석을 본 후에 비슷한 체크를했습니다. 고마워요! –