Maison > développement back-end > C++ > Pourquoi `pow(10,5)` renvoie-t-il parfois 9999 au lieu de 10000 en C ?

Pourquoi `pow(10,5)` renvoie-t-il parfois 9999 au lieu de 10000 en C ?

Susan Sarandon
Libérer: 2024-12-23 07:34:00
original
341 Les gens l'ont consulté

Why Does `pow(10,5)` Sometimes Return 9999 Instead of 10000 in C  ?

Pourquoi pow(10,5) est-il égal à 9 999 en C ?

Lorsque vous invoquez la fonction pow en C pour calculer une opération de puissance , la valeur de retour peut potentiellement avoir une précision en virgule flottante. Cependant, dans certains cas, le résultat peut être tronqué lorsqu'il est affecté à une variable entière.

Dans l'exemple fourni :

const int sections = 10;

for(int t= 0; t < 5; t++){
   int i = pow(sections, 5- t -1);  
   cout << i << endl;
}
Copier après la connexion

Les calculs répétés de pow(sections, 5- t - 1) l'utilisation des sections entières et de la soustraction entière donnera des valeurs entières. Lorsque ces valeurs sont utilisées pour calculer la puissance, le résultat peut être une valeur à virgule flottante avec une partie fractionnaire.

L'attribution de cette valeur à virgule flottante à la variable entière i déclenche la troncature. Par exemple, si pow(sections, 5-t-1) est évalué à 9999,9999, la partie fractionnaire sera supprimée, vous laissant i = 9999.

Pour éviter ce problème, vous pouvez directement utiliser la fonction pow dans l'instruction de sortie :

for(int t = 0; t < 5; t++){
    cout << pow(sections,5-t-1) << endl; 
}
Copier après la connexion

Dans ce cas, le résultat de pow(sections,5-t-1) est imprimé directement sans avoir besoin d'une variable entière intermédiaire, garantissant que les valeurs correctes sont affichées.

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