English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
La funzione frexp(x, exp) in C++ restituisce il mantissa e l'esponente di un numero a virgola mobile.
Il numero significativo binario è un numero a virgola mobile, il cui valore assoluto (mantissa) si trova nell'intervallo [0.5, 1], mentre l'esponente è un intero di 2.
La funzione si trova in<cmath>Definito nel file di intestazione.
Matematicamente
x = Binary significand * 2^esponente
L'esponente viene memorizzato nell'indirizzo esp, mentre il numero significativo binario è il valore restituito da frexp().
double frexp(double x, int* exp); float frexp(float x, int* exp); long double frexp(long double x, int* exp); double frexp(T x, int* exp); // Per interi
La funzione frexp() ha due parametri e restituisce un valore binario significativo di tipo double, float o long double.
x -Valore da decomporre.
exp -Puntatore all'intero da cui memorizzare il valore dell'esponente.
La funzione frexp() restituisce il mantissa, il cui valore assoluto si trova nella gamma [0.5, 1]. Se x è zero, sia il numero significativo che l'esponente sono zero.
Parametro (x) | Bit effettivo binario | Esponente |
---|---|---|
0 | 0 | 0 |
x >= 1 | Positivo | Positivo |
x <= -1 | Negativo | Positivo |
-1 < x < 0 | Negativo | Negativo |
0 < x < 1 | Positivo | Negativo |
#include <iostream> #include <cmath> using namespace std; int main() { double x = 6.81, significand; int *exp; significand = frexp(x, exp); cout << x << " = " << significand << " * 2^" << *exp << endl; return 0; }
运行程序时,输出为:
6.81 = 0.85125 * 2^3
#include <iostream> #include <cmath> using namespace std; int main() { double significand; int *exp, x = 25; significand = frexp(x, exp); cout << x << " = " << significand << " * 2^" << *exp << endl; return 0; }
运行程序时,输出为:
25 = 0.78125 * 2^5