Maison >développement back-end >C++ >Pourquoi ma fonction pow(5,2) renvoie-t-elle 24 au lieu de 25 ?
Dans une simple calculatrice avec des fonctions mathématiques, le pow () La fonction semble produire des résultats inexacts, en particulier pour les puissances. L'opération pow(5,2) renvoie 24, ce qui est incorrect.
La raison de cet écart réside dans la conversion du type de données. La fonction pow() dans le code fourni renvoie un nombre à virgule flottante, mais le résultat est affecté à une variable entière (réponse int). Par conséquent, la partie décimale du nombre est tronquée lors de la conversion.
Pour obtenir le résultat correct, le calcul doit être modifié pour gérer la virgule flottante valeurs. Deux approches sont suggérées :
Arrondir le résultat à virgule flottante :
En ajoutant 0,5 au résultat pow() avant de l'attribuer à la variable entière, elle peut être arrondie à l’entier le plus proche. Cette méthode convient lorsque le résultat devrait être un entier.
int answer; answer = pow(number1,number2) + 0.5;
Utilisation d'une variable non entière pour les résultats en virgule flottante :
S'il n'est pas garanti que le résultat soit un entier, il est recommandé d'utiliser une variable double ou float au lieu d'un entier. De cette façon, la partie décimale du nombre sera conservée.
double answer; answer = pow(number1,number2);
La fonction racine carrée dans le code attribue également le résultat à une variable entière, ce qui n'est pas approprié. Étant donné que les racines carrées sont souvent non entières, il est recommandé d'utiliser une variable double ou float pour stocker le résultat.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!