Funcția ilogb () din C ++ returnează partea integrală a logaritmului | x |, utilizând FLT_RADIX ca bază pentru logaritmul.
Aceasta este definită în fișierul antet.
Matematic,
x = semnificație și * FLT_RADIXexponent
semnificația este o valoare în virgulă mobilă în intervalul (1.0, 2.0), x este argumentul transmis către ilogb () și exponent este valoarea întreagă returnată de ilogb (). Valoarea FLT_RADIX este în general 2.
Valoarea returnată de ilogb () este cu una mai mică decât exponentul generat de funcția frexp (), deoarece semnificația este în intervalul (1.0, 2.0) în loc de (0.5, 1.0) ca în frexp ().
prototip ilogb () (Începând cu standardul C ++ 11)
int ilogb (x dublu); int ilogb (float x); int ilogb (lung dublu x); int ilogb (T x); // Pentru tip integral
ilogb () Parametri
Funcția ilogb () ia un singur argument al cărui ilogb este calculat.
ilogb () Valoare returnată
Funcția ilogb () returnează partea integrală a logaritmului | x |, utilizând FLT_RADIX ca bază pentru logaritmul.
- Dacă argumentul este 0, returnează FP_LOGB0.
- Dacă argumentul este NaN, acesta returnează FP_LOGBNAN.
- Dacă argumentul este infinit, acesta returnează INT_MAX.
Exemplul 1: Cum funcționează funcția ilogb () în 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; )
Când rulați programul, ieșirea va fi:
ilogb (16,81) = 4 16,81 = 1,05062 * 2 4
Exemplul 2: funcția ilogb () cu tip integral
#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; )
Când rulați programul, ieșirea va fi:
ilogb (19) = 4 19 = 1,1875 * 2 4