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) 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; }
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; }
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!