Maison >développement back-end >C++ >Pourquoi l'opérateur de module (%) de C ne fonctionne-t-il qu'avec des nombres entiers et comment puis-je gérer les restes fractionnaires ?
Pourquoi la division de module (%) ne fonctionne qu'avec des entiers en C
La division avec l'opérateur de module (%) en C est limitée aux entiers opérandes en raison de la nature inhérente de la division entière. Lors de la division d'entiers, le résultat est naturellement un entier, et le reste (le résultat après soustraction du produit du quotient et du diviseur) est également un entier.
Cependant, lorsqu'il s'agit de nombres réels, la notion de " reste" devient plus complexe. Prenons l'exemple suivant :
double x = 3.1; int y = 2; double remainder = x % y;
Dans ce cas, le résultat souhaité serait 1,1, car 3,1 divisé par 2 donne un quotient de 1 et un reste de 1,1. Malheureusement, l'opérateur de module en C traite à la fois x et y comme des entiers, ce qui donne un reste entier de 1 au lieu de 1,1.
Pour résoudre ce problème en C, vous pouvez utiliser la fonction fmod de la bibliothèque standard. Cette fonction effectue une division hybride et renvoie un reste fractionnaire, même si les opérandes sont des nombres réels. Par exemple :
#include <math.h> double x = 3.1; int y = 2; double remainder = fmod(x, y);
Cela produira le reste correct de 1,1, garantissant que l'opération de module se comporte de manière cohérente pour les opérandes entiers et réels.
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!