Rechercher
 

Améliorations / Corrections

Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.

Emplacement :

Description des améliorations :

Fonctions modf, modff et modfl

Entête à inclure

#include <math.h>  // <cmath> en C++

Fonctions modf, modff et modfl

double modf( double value, double * intPtr );                          // C89
float modff( float value, float * intPtr );                            // C99
long double modfl( long double value, long double * intPtr );          // C99

Ces trois fonctions permettent de séparer la partie entière et la partie décimale de la valeur passée en premier paramètre. Les deux parties ont le même signe que la valeur spécifiée.

La différence entre ces trois fonctions réside dans le type de données utilisé pour les paramètres et la valeur de retour (double, float ou long double).

Paramètres

Valeur de retour

Exemple de code

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main( int argc, char * argv[] ) {

    // On initialise le générateur de nombres pseudo aléatoire
    // avec le timestamp courant.
    srand ( time ( NULL));

    // On calcule une valeur aléatoire de type double entre [1, 10[.
    double value = ( rand() / (double) RAND_MAX ) * 10;

    // On décompose la valeur
    double intPart;
    double decPart = modf( value, &intPart );

    printf( "%g se décompose en %g et %g\n", value, intPart, decPart );

    return EXIT_SUCCESS;
}
Exemple d'utilisation des fonctions ilogb.

Il est à noter que la librairie mathématique doit être ajoutée durant l'étape de "link" (édition des liens) de votre exécutable. Cela se réalise en ajoutant l'option -lm à votre compilateur GCC. En cas d'utilisation d'un autre compilateur, je vous renvoie vers la documentation de ce dernier.

$> gcc -o sample sample.c -lm
$> ./sample
3.17458 se décompose en 3 et 0.174582
$>

Sujets connexes

Les fonctions ldexp, ldexpf et ldexpl
Les fonctions frexp, frexpf et frexpl