Maison >développement back-end >C++ >Pourquoi la division entière en C donne-t-elle zéro lorsqu'elle est stockée dans une variable double ?

Pourquoi la division entière en C donne-t-elle zéro lorsqu'elle est stockée dans une variable double ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-03 11:35:10999parcourir

Why Does Integer Division in C   Result in Zero When Stored in a Double Variable?

Une division entière donne un zéro surprenant dans une variable double

En essayant de calculer une division simple (3/5), vous pouvez rencontrer des résultats inattendus . Même si le résultat est stocké dans une variable à double précision, le résultat peut apparaître de manière erratique comme étant nul. Pour percer ce mystère, étudions le mécanisme sous-jacent :

Dans l'extrait de code fourni, le dividende (3) et le diviseur (5) sont des nombres entiers. Par défaut, C interprète cette division comme une division entière, ce qui arrondit le résultat et ignore la partie fractionnaire. Dans ce cas, 3 divisé par 5 donne 0, comme prévu dans une division entière.

Pour résoudre ce problème et obtenir la division en virgule flottante souhaitée, nous devons nous assurer qu'au moins un des opérandes est représenté comme un vrai numéro. Ceci peut être réalisé en ajoutant ".0" au diviseur ou au dividende :

double f = 3.0 / 5;  // Explicitly making the dividend a real number

// or

double f = 3 / 5.0;  // Explicitly making the divisor a real number

En convertissant l'un des opérandes en nombre réel, nous forçons le compilateur à effectuer une division en virgule flottante. Cela garantit que la partie fractionnaire est préservée et que le résultat correct (0,6 dans ce cas) est stocké dans la variable f.

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!

Déclaration:
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