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 mathématique et à virgule flottante
ldexp
modf
, modff
, modfl
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour