Beaucoup ont déclaré que 1/3 = 0, mais n'a pas expliqué pourquoi il en est ainsi.
C et C++ effectueront l'opération en fonction des types d'opérandes. Puisque les deux opérandes sont des entiers, il effectue une division entière créant un résultat entier. Quand il est forcé d'affecter ce résultat entier à une variable double, il convertit l'entier 0 en un double 0.0.
Il n'est pas nécessaire de doubler les opérandes. Si l'un est double, le compilateur convertira l'autre en double avant d'effectuer l'opération. 1.0/3 ou 1/3.0 retournera le résultat attendu, tout comme 1.0/3.0.
Astuce de débogage: il est évident que rien ne cloche avec pow() si vous inspectez simplement les arguments passés à pow(). Vous verriez que la valeur du deuxième argument était zéro au lieu de 1/3, montrant que pow() fonctionne correctement et que le problème réside dans votre code. –
Ok, je l'ai déjà résolu .. stupides ints – vehomzzz
Tout le monde a fait cette erreur. – mob