Retour de la fonction: PHP
-
12-11-2019 - |
Question
Je ne sais pas ce qui me manque, mais je ne peux pas obtenir $c
pour sortir correctement.
<?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
?>
Je m'excuse pour la question débutante.
Solution au problème:
<?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
?>
Merci à tous ceux qui ont répondu ... Je vais m'assurer de lire les informations complètes sur la fonction la prochaine fois!
La solution
sqrt
Renvoie un float
, qui n'est pas un int
, donc votre fonction ne renvoie rien. Laisser juste le is_int
Chèque?
Autres conseils
sqrt
Renvoie toujours un flotteur. Votre instruction IF est toujours fausse.
Si vous voulez faire le chèque, faites ceci:
$i = (int) $c;
if($c == $i) return $c
Ce que cela fait est de lancer le flotteur à un int, et si le flotteur $c
et le int $i
sont égaux, alors il reviendra
sqrt
Renvoie un float
, c'est pourquoi is_int
est toujours faux.
Si vous voulez vraiment vérifier s'il s'agit d'un entier, vous pouvez utiliser:
if ((int)$c == $c)
return $c;
C'est la faute de frappe dans votre résultat
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
?>