frexp
, , frexpf
frexpl
Obtient la mantisse et l’exposant d’un nombre à virgule flottante.
Syntaxe
double frexp(
double x,
int *expptr
);
float frexpf(
float x,
int * expptr
);
long double frexpl(
long double x,
int * expptr
);
#define frexpl(X, INT_PTR) // Requires C11 or higher
float frexp(
float x,
int * expptr
); // C++ only
long double frexp(
long double x,
int * expptr
); // C++ only
Paramètres
x
Valeur à virgule flottante.
expptr
Pointeur désignant l’exposant entier stocké.
Valeur retournée
frexp
retourne la mantisse. Si x
a la valeur 0, la fonction retourne 0 pour la mantisse et l’exposant. Si expptr
c’est NULL
le cas, le gestionnaire de paramètres non valide est appelé comme décrit dans la validation des paramètres. Si l'exécution est autorisée à se poursuivre, cette fonction affecte à errno
la valeur EINVAL
et retourne 0.
Notes
La frexp
fonction décompose la valeur à virgule flottante (x
) en mantissa (m
) et un exposant (n
), de sorte que la valeur absolue est m
supérieure ou égale à 0,5 et inférieure à 1,0 etm
x
= * 2.n
L’exposant entier n
est stocké à l’emplacement désigné par expptr
.
C++ autorisant la surcharge, vous pouvez appeler des surcharges de frexp
. Dans un programme C, sauf si vous utilisez la <macro tgmath.h> pour appeler cette fonction, frexp
prend toujours un double
pointeur et int
retourne un double
.
Si vous utilisez la macro <tgmath.h>frexp()
, le type de l’argument détermine la version de la fonction sélectionnée. Pour plus d’informations, consultez les mathématiques génériques de type.
Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.
Spécifications
Fonction | En-tête requis |
---|---|
frexp , , frexpf frexpl |
<math.h> |
Macro frexp |
<tgmath.h> |
Pour plus d’informations sur la compatibilité, consultez Compatibility.
Exemple
// crt_frexp.c
// This program calculates frexp( 16.4, &n )
// then displays y and n.
#include <math.h>
#include <stdio.h>
int main( void )
{
double x, y;
int n;
x = 16.4;
y = frexp( x, &n );
printf( "frexp( %f, &n ) = %f, n = %d\n", x, y, n );
}
frexp( 16.400000, &n ) = 0.512500, n = 5
Voir aussi
Prise en charge des fonctions mathématiques et à virgule flottante
ldexp
modf
, , modff
modfl