Maison > développement back-end > C++ > Pourquoi la division entière en C donne-t-elle zéro lors de la division de 3 par 5 en double ?

Pourquoi la division entière en C donne-t-elle zéro lors de la division de 3 par 5 en double ?

Barbara Streisand
Libérer: 2024-12-02 12:33:12
original
443 Les gens l'ont consulté

Why Does Integer Division in C   Result in Zero When Dividing 3 by 5 as Doubles?

Anomalie de division en virgule flottante : pourquoi (3/5) donne-t-il zéro en double précision ?

Lors de l'exécution d'opérations arithmétiques sur une virgule flottante chiffres, les programmeurs rencontrent souvent des résultats surprenants. Une telle anomalie se produit avec l'opérateur de division (/). Bien que les nombres soient stockés sous forme de valeurs à virgule flottante double précision, une simple division telle que (3/5) peut entraîner la sortie inattendue de zéro.

Ce comportement découle du fait que 3 et 5 sont des nombres entiers. par défaut en C . Lorsque des nombres entiers sont utilisés dans une expression arithmétique, l'opérateur de division effectue une division entière, ce qui élimine la partie fractionnaire du résultat.

Correction de l'opération de division

Pour obtenir le résultat correct de la division en virgule flottante, il faut s'assurer qu'au moins un opérande est une valeur à virgule flottante. Ceci peut être réalisé en convertissant l’un des nombres entiers en un nombre à virgule flottante double précision. Par exemple, on peut utiliser le code suivant :

double f = 3.0 / 5;
Copier après la connexion

Dans ce cas, le 3.0 est un nombre à virgule flottante double précision, garantissant que le compilateur effectue une division en virgule flottante, qui conserve la partie fractionnaire du résultat.

En convertissant l'un des opérandes en une valeur à virgule flottante, l'opérateur de division produit désormais le résultat attendu, qui est 0,6 dans ce cas. Cette technique permet aux programmeurs d'effectuer correctement des opérations arithmétiques sur des nombres à virgule flottante et d'éviter des sorties nulles inattendues.

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