retorno de función:PHP
-
12-11-2019 - |
Pregunta
No estoy seguro de lo que me estoy perdiendo, pero no puedo conseguirlo. $c
para emitir correctamente.
<?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
?>
Pido disculpas por la pregunta de principiante.
Solución al problema:
<?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
?>
Gracias a todos los que respondieron... ¡Me aseguraré de leer la información completa sobre la función la próxima vez!
Solución
sqrt
devuelve un float
, que no es un int
, por lo que su función no devuelve nada.Simplemente deja fuera el is_int
¿controlar?
Otros consejos
sqrt
siempre devuelve un flotador.Tu declaración if siempre es falsa.
Si quieres hacer la verificación haz esto:
$i = (int) $c;
if($c == $i) return $c
Lo que esto hace es convertir el flotador en un int, y si el flotador $c
y el int $i
son iguales, entonces regresará
sqrt
devuelve un float
, es por eso is_int
siempre es falso.
Si realmente quieres comprobar si es un número entero, puedes usar:
if ((int)$c == $c)
return $c;
Eso es un error tipográfico en tu resultado.
function pythThm($a, $b){
$a2 = pow($a, 2);
$b2 = pow($b, 2);
$c = sqrt($a2 + $b2);
return (int)$c;
}
echo pythThm(3, 4);
<?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
?>