English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
La funzione ilogb() in C++ utilizza FLT_RADIX come base del logaritmo e restituisce l'intero parte del logaritmo di |x|.
Questo<cmath>Definito nelle intestazioni.
Matematicamente
x = significand * FLT_RADIXexponent
significand è un valore floating-point nell'intervallo [1.0, 2.0), x è il parametro passato a ilogb() e exponent è l'intero valore restituito da ilogb(). Il valore di FLT_RADIX è generalmente 2.
Il valore restituito da ilogb() è maggiore difrexp()L'esponente generato dalla funzione è minore di 1, perché i numeri significativi sono nell'intervallo [1.0, 2.0], non nell'intervallo [0.5, 1.0] come frexp().
int ilogb(double x); int ilogb(float x); int ilogb(long double x); int ilogb(T x); // Per tipo integrale
La funzione ilogb() accetta un parametro, il cui ilogb è calcolato.
La funzione ilogb() utilizza FLT_RADIX come base del logaritmo e restituisce l'intero parte del logaritmo di |x|.
Se il parametro è 0, restituisce FP_LOGB0.
Se il parametro è NaN, restituisce FP_LOGBNAN.
Se il parametro è infinito, restituisce INT_MAX.
#include <iostream> #include <cmath> #include <cfloat> using namespace std; int main() { int result; double significand; double x = 16.81; result = ilogb(x); significand = x / pow(FLT_RADIX, result); cout << "ilogb (" << x << ") = " << result << endl; cout << x << " = " << significand << " * " << FLT_RADIX << " ^ " << result << endl << endl; return 0; }
当运行该程序时,输出为:
ilogb(16.81) = 4 16.81 = 1.05062 * 2^4
#include <iostream> #include <cmath> #include <cfloat> using namespace std; int main() { int result, x = 19; result = ilogb(x); double significand = x/pow(FLT_RADIX, result); cout << "ilogb (" << x << ") = " << result << endl; cout << x << " = " << significand << " * " << FLT_RADIX << " ^ " << result << endl << endl; return 0; }
当运行该程序时,输出为:
ilogb (19) = 4 19 = 1.1875 * 2^4