std::ilogb
Da cppreference.com.
![]() |
Questa pagina è stata tradotta in modo automatico dalla versione in ineglese della wiki usando Google Translate.
La traduzione potrebbe contenere errori e termini strani. Muovi il puntatore sopra al testo per vedere la versione originale. Puoi aiutarci a correggere gli gli errori. Per ulteriori istruzioni clicca qui. |
Elemento definito nell'header <cmath>
|
||
int ilogb( float arg ); |
(dal C++11) | |
int ilogb( double arg ); |
(dal C++11) | |
int ilogb( long double arg ); |
(dal C++11) | |
double ilogb( Integral arg ); |
(dal C++11) | |
#define FP_ILOGB0 /*implementation-defined*/ |
(dal C++11) | |
#define FP_ILOGBNAN /*implementation-defined*/ |
(dal C++11) | |
Extracts the value of the exponent from the floating-point argument arg
, and returns it as a signed integer value. Formally, the result is the integral part of log
r|arg| as a signed integral value, for non-zero arg, where r
is std::numeric_limits<T>::radix and T
is the floating-point type of arg
.
Indice |
[modifica] Parametri
arg | - | valore in virgola mobile
Original: floating point value The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
[modifica] Valore di ritorno
The floating-point exponent, cast to integer, as if by static_cast<int>(std::logb(arg)).
Errore di dominio o l'intervallo si può verificare se
arg
è pari a zero, FP_ILOGB0 viene restituito in questo caso.Original:
Domain or range error may occur if
arg
is zero, FP_ILOGB0 is returned in that case.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Errore di dominio o l'intervallo si può verificare se
arg
è infinito, MAX_INT viene restituito in questo caso.Original:
Domain or range error may occur if
arg
is infinite, MAX_INT is returned in that case.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Errore di dominio o l'intervallo si può verificare se
arg
è NaN, FP_ILOGBNAN viene restituito in questo caso.Original:
Domain or range error may occur if
arg
is NaN, FP_ILOGBNAN is returned in that case.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Se il risultato non può essere rappresentato come int, il risultato è indefinito.
Original:
If the result cannot be represented as int, the result is undefined.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[modifica] Note
Il valore dell'esponente restituito da std::ilogb è sempre inferiore a 1 l'esponente rientrati da std::frexp causa dei diversi requisiti di normalizzazione: per l'esponente
| è tra 1 e
| è tra 0.5 e 1.
e
restituito da std::ilogb, |arg*r-e| è tra 1 e
r
(tipicamente tra 1 e 2), ma per l' esponente e
restituito da std::frexp, |arg*2-e| è tra 0.5 e 1.
Original:
The value of the exponent returned by std::ilogb is always 1 less than the exponent retuned by std::frexp because of the different normalization requirements: for the exponent
| is between 1 and
| is between 0.5 and 1.
e
returned by std::ilogb, |arg*r-e| is between 1 and
r
(typically between 1 and 2), but for the exponent e
returned by std::frexp, |arg*2-e| is between 0.5 and 1.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[modifica] Esempio
Confronta diversi virgola mobile funzioni di decomposizione
Original:
Compares different floating-point decomposition functions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
#include <iostream> #include <cmath> #include <limits> int main() { double f = 123.45; std::cout << "Given the number " << f << " or " << std::hexfloat << f << std::defaultfloat << " in hex,\n"; double f3; double f2 = std::modf(f, &f3); std::cout << "modf() makes " << f3 << " + " << f2 << '\n'; int i; f2 = std::frexp(f, &i); std::cout << "frexp() makes " << f2 << " * 2^" << i << '\n'; i = std::ilogb(f); std::cout << "logb()/ilogb() make " << f/std::scalbn(1.0, i) << " * " << std::numeric_limits<double>::radix << "^" << std::ilogb(f) << '\n'; }
Output:
Given the number 123.45 or 0x1.edccccccccccdp+6 in hex, modf() makes 123 + 0.45 frexp() makes 0.964453 * 2^7 logb()/ilogb() make 1.92891 * 2^6
[modifica] Vedi anche
scompone un numero in significante e una potenza di 2 Original: decomposes a number into significand and a power of 2 The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (funzione) | |
(C++11) |
estrae esponente del numero Original: extracts exponent of the number The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (funzione) |
(C++11) (C++11) |
moltiplica un numero per FLT_RADIX elevato a una potenza Original: multiplies a number by FLT_RADIX raised to a power The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (funzione) |