FMOD |
Modulo avec virgule flottante |
---|---|
Langage C | math.h |
Syntaxe
double fmod(double a,double b); |
Paramètres
Nom | Description |
---|---|
a | Ce paramètre permet d'indiquer le nombre à diviser |
b | Ce paramètre permet d'indiquer le diviseur |
Description
Cette fonction retourne le reste d'une division de a par b.
Algorithme
MODULE FMOD(x, y) * Vérifier si y est égal à 0 (division par zéro) SI y = 0 ALORS RETOURNE NaN * Erreur : division par zéro FIN SI * Calculer le quotient de x divisé par y, tronqué vers zéro quotient ← x / y * division flottante quotient_tronqué ← tronquer(quotient) * Supprimer la partie décimale * Calculer le reste en soustrayant la partie entière reste ← x - (quotient_tronqué x y) RETOURNE reste |
Remarques
- Si vous avez un message d'erreur «undefined reference to `fmod'» avec un compilateur «gcc», vous devrez probablement rajouter le paramètre «-lm» afin de lui indiquer qu'il faut inclure les bibliothèques mathématique à vos projets.
- Calcul du reste d'une division flottante : La fonction fmod calcule le reste de la division d'un nombre flottant par un autre. Contrairement à l'opérateur % (qui fonctionne uniquement pour les entiers), fmod gère les nombres en virgule flottante, rendant la fonction indispensable pour les calculs scientifiques ou les opérations nécessitant des nombres décimaux.
- Signature et types compatibles : La signature de fmod est double fmod(double x, double y), et elle accepte deux paramètres de type double. Il existe aussi une version pour les flottants simples (float fmodf) et pour les nombres en double précision étendue (long double fmodl), permettant d'adapter les calculs selon les besoins en précision.
- Comportement pour les diviseurs nuls : Si le second paramètre (y) est nul, fmod renvoie une valeur indéfinie, et certains systèmes déclenchent une erreur (comme un signal flottant ou une exception). Les développeurs doivent donc vérifier que le diviseur n'est pas zéro avant d'appeler la fonction.
- Résultat du même signe que le dividende : La valeur retournée par fmod a toujours le même signe que le dividende (x). Cela signifie que le reste suit la direction du nombre à diviser, ce qui peut être différent du comportement attendu dans certains systèmes mathématiques ou langages.
- Utilisations pratiques : fmod est souvent utilisée dans des applications nécessitant une gestion cyclique ou périodique, comme les calculs d'angles en trigonométrie (convertir des angles en radian dans un intervalle donnée), les moteurs de jeux ou les simulations physiques.
- Différence avec remainder : Bien que similaire, la fonction remainder diffère de fmod par la méthode utilisée pour calculer le reste. remainder minimise l'amplitude du résultat, alors que fmod suit strictement le comportement basé sur la division tronquée. Cela peut entraîner des résultats différents dans certains cas.
- Compatibilité avec les standards C : fmod est conforme au standard C89/C90 et C99, garantissant sa portabilité sur la plupart des plateformes. Cependant, son comportement pour des cas limites, comme des valeurs infinies ou NaN, peut varier légèrement entre les implémentations, donc il est recommandé de consulter la documentation spécifique à votre compilateur.
Exemple
Voici quelques exemples typiques de l'utilisation de cette fonction :
Essayer maintenant !
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
-
- int main()
- {
- printf("fmod(-81,9) = %.0f\n",fmod(-81,9));
- printf("fmod(15,3) = %.0f\n",fmod(15,3));
- printf("fmod(16,3) = %.0f\n",fmod(16,3));
- printf("fmod(17,3) = %.0f\n",fmod(17,3));
- printf("fmod(18,3) = %.0f\n",fmod(18,3));
- printf("fmod(19,3) = %.0f\n",fmod(19,3));
- printf("fmod(0,1) = %.0f\n",fmod(0,1));
- return 0;
- }
on obtiendra le résultat suivant :
fmod(-81,9) = -0fmod(15,3) = 0
fmod(16,3) = 1
fmod(17,3) = 2
fmod(18,3) = 0
fmod(19,3) = 1
fmod(0,1) = 0
Voir également
Langage de programmation - C - Référence de procédures et fonctions - div
Langage de programmation - C++ - Référence de procédures et fonctions - fmod
Références
Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 731.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 104.
Dernière mise à jour : Mardi, le 28 juillet 2015