English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Metodo di utilizzo e esempio della funzione ilogb() in C++

函数库cmathC++

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().

Prototipo di ilogb() [dalla versione C++ 11]

int ilogb(double x);
int ilogb(float x);
int ilogb(long double x);
int ilogb(T x); // Per tipo integrale

Parametro ilogb()

La funzione ilogb() accetta un parametro, il cui ilogb è calcolato.

Valore restituito da ilogb()

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.

Esempio 1: Come funziona la funzione ilogb() in C++?

#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

Esempio 2: Funzione ilogb() con tipo intero

#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

函数库cmathC++