En C, utiliser pow(10, 5) pour calculer 10 élevé à la puissance 5 peut entraînent parfois une valeur inattendue de 9 999. Ce comportement n'est pas cohérent et peut prêter à confusion, comme le démontre l'extrait de code suivant :
const int sections = 10; for (int t = 0; t < 5; t++) { int i = pow(sections, 5 - t - 1); cout << i << endl; }
Le résultat attendu de ce code est [10000, 1000, 100, 10, 1], mais en réalité produit [9999, 1000, 99, 10, 1].
La cause de ce problème réside dans la représentation en virgule flottante de pow(10.0, 5) en C . Lorsque le résultat de ce calcul est stocké dans une variable à virgule flottante double précision, il peut contenir des parties fractionnaires. Lorsqu'elle est ensuite affectée à une variable entière, la partie fractionnaire est tronquée, ce qui donne une valeur légèrement inférieure à la réponse réelle. Dans ce cas, pow(10.0, 5) peut être représenté en interne par 9999.9999999, qui est tronqué à 9999 lorsqu'il est affecté à un entier.
Pour éviter ce problème, on peut utiliser le alternatives suivantes :
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!