Die Funktion ilogb () in C ++ gibt den integralen Teil des Logarithmus von | x | zurück, wobei FLT_RADIX als Basis für den Logarithmus verwendet wird.
Dies ist in der Header-Datei definiert.
Mathematisch,
x = Signifikand * FLT_RADIXexponent
Der Signifikand ist ein Gleitkommawert im Bereich (1.0, 2.0), x ist das an ilogb () übergebene Argument und Exponent ist der von ilogb () zurückgegebene ganzzahlige Wert. Der Wert von FLT_RADIX ist im Allgemeinen 2.
Der von ilogb () zurückgegebene Wert ist eins weniger als der von der Funktion frexp () erzeugte Exponent, da der Signifikand im Bereich (1.0, 2.0) anstelle von (0.5, 1.0) wie in frexp () liegt.
ilogb () Prototyp (Stand C ++ 11 Standard)
int ilogb (double x); int ilogb (float x); int ilogb (langes doppeltes x); int ilogb (T x); // Für integralen Typ
ilogb () Parameter
Die Funktion ilogb () verwendet ein einzelnes Argument, dessen ilogb berechnet wird.
ilogb () Rückgabewert
Die Funktion ilogb () gibt den integralen Teil des Logarithmus von | x | zurück, wobei FLT_RADIX als Basis für den Logarithmus verwendet wird.
- Wenn das Argument 0 ist, wird FP_LOGB0 zurückgegeben.
- Wenn das Argument NaN ist, wird FP_LOGBNAN zurückgegeben.
- Wenn das Argument unendlich ist, wird INT_MAX zurückgegeben.
Beispiel 1: Wie funktioniert die Funktion ilogb () in C ++?
#include #include #include 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; )
Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:
ilogb (16,81) = 4 16,81 = 1,05062 * 2 4
Beispiel 2: ilogb () -Funktion mit ganzzahligem Typ
#include #include #include 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; )
Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:
ilogb (19) = 4 19 = 1,1875 * 2 4