📜  C++ ilogb()

📅  最后修改于: 2020-09-25 07:44:02             🧑  作者: Mango

C++中的ilogb() 函数使用FLT_RADIX作为对数的底数,返回| x |的对数的整数部分。

这在头文件中定义。

数学上

x = significand * FLT_RADIXexponent

significand是在[1.0,2.0)范围内的浮点值,x是传递给ilogb()的参数, exponent是ilogb()返回的整数值。 FLT_RADIX的值通常为2。

ilogb()返回的值比frexp() 函数生成的指数小1,因为有效数的范围是[1.0,2.0)而不是frexp()中的[0.5,1.0)。

ilogb()原型[从C++ 11标准开始]

int ilogb (double x);
int ilogb (float x);
int ilogb (long double x);
int ilogb (T x); // For integral type

ilogb()参数

ilogb() 函数采用一个参数,该参数的ilogb是计算得出的。

ilogb()返回值

ilogb() 函数使用FLT_RADIX作为对数的底数,返回| x |的对数的整数部分。

示例1:ilogb() 函数如何在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;
}

运行该程序时,输出为:

ilogb (16.81) = 4
16.81 = 1.05062 * 2^4

示例2:具有整数类型的ilogb() 函数

#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;
}

运行该程序时,输出为:

ilogb (19) = 4
19 = 1.1875 * 2^4