Maison > développement back-end > C++ > Pourquoi `pow(5, 2)` renvoie-t-il 24 en C : un problème de type de données ?

Pourquoi `pow(5, 2)` renvoie-t-il 24 en C : un problème de type de données ?

Barbara Streisand
Libérer: 2024-12-06 12:03:12
original
540 Les gens l'ont consulté

Why Does `pow(5, 2)` Return 24 in C  : A Data Type Issue?

Pourquoi pow(5, 2) renvoie 24 : une question de types de données et d'arrondi

Dans le programme C fourni, le pow( ) la fonction est utilisée pour calculer les puissances des nombres. Cependant, lorsque pow(5, 2) est exécuté, le programme renvoie de manière inattendue 24, au lieu du résultat correct de 25. Cela peut laisser les programmeurs perplexes, se demandant pourquoi la fonction semble se comporter mal.

La racine de ce problème réside dans la gestion du type de données dans la fonction pow(). Par défaut, pow() renvoie un nombre à virgule flottante double précision, qui peut contenir des valeurs décimales. Cependant, le programme attribue ensuite ce double à une variable entière, tronquant ainsi toute partie décimale. Dans le cas de 5^2, le résultat réel est 24,99997 ou similaire, mais la troncature l'arrondit à 24.

Pour résoudre ce problème et obtenir le résultat entier correct, il est nécessaire d'arrondir explicitement le pow () valeur à l’entier le plus proche. Ceci peut être réalisé en ajoutant 0,5 au résultat avant de l'attribuer à la variable entière. L'extrait de code suivant illustre la correction :

int answer;
answer = pow(number1, number2) + 0.5;
Copier après la connexion

En ajoutant 0,5, nous arrondissons effectivement le double à l'entier le plus proche, garantissant que le résultat de 5^2 devient 25 comme prévu.

Il est important de noter que cette technique d'arrondi ne convient que dans les cas où le résultat du calcul de puissance est garanti être un nombre entier. Dans les situations où le résultat peut être un nombre non entier (par exemple, des racines carrées), il est préférable d'attribuer le résultat pow() à une variable double ou flottante pour préserver les valeurs fractionnaires.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal