C ++ frexp () - Bibliothèque standard C ++

La fonction frexp () en C ++ décompose un nombre à virgule flottante en son significande binaire.

Le significande binaire est une virgule flottante dont la valeur absolue (mantisse) se situe dans l'intervalle (0,5, 1) et un exposant entier pour 2.

La fonction est définie dans le fichier d'en-tête.

Mathématiquement,

x = significande binaire * 2 exposant

où, exposant est stocké à l'emplacement pointé par exp et le significand binaire est la valeur retournée par frexp ().

prototype frexp () (à partir de la norme C ++ 11)

double fréx (double x, int * exp); float frexp (float x, int * exp); long double frexp (long double x, int * exp); double fréquence (T x, int * exp); // Pour le type intégral

La fonction frexp () prend deux arguments et renvoie la valeur de significande binaire de type double, floatou long double.

Paramètres frexp ()

  • x - La valeur à décomposer.
  • exp - Le pointeur vers un entier où la valeur de l'exposant doit être stockée.

frexp () Valeur de retour

La fonction frexp () renvoie le significande binaire dont la valeur absolue se situe dans l'intervalle (0,5, 1). Si x est nul, le significande et l'exposant sont tous deux nuls.

valeurs de retour de frexp ()
Paramètre (x) Significand binaire Exposant
0 0 0
x> = 1 Positif Positif
x <= -1 Négatif Positif
-1 <x <0 Négatif Négatif
0 <x <1 Positif Négatif

Exemple 1: Comment fonctionne la fonction frexp () en C ++?

 #include #include using namespace std; int main () ( double x = 6.81, significand; int *exp; significand = frexp(x , exp); cout << x << " = " << significand << " * 2^" << *exp << endl; return 0; ) 

Lorsque vous exécutez le programme, la sortie sera:

 6,81 = 0,85125 * 2 3 

Exemple 2: fonction frexp () avec type intégral

 #include #include using namespace std; int main () ( double significand; int *exp, x = 25; significand = frexp (x , exp); cout << x << " = " << significand << " * 2^" << *exp << endl; return 0; ) 

Lorsque vous exécutez le programme, la sortie sera:

 25 = 0,78125 * 2 5 

Articles intéressants...