📜  C++ STL-math.frexp()函数(1)

📅  最后修改于: 2023-12-03 15:13:55.652000             🧑  作者: Mango

C++ STL - math.frexp()函数

简介

frexp() 函数是 C++ STL(标准模板库)中的一个数学函数,用于将一个浮点数拆分成尾数和指数,其原型如下:

double frexp(double x, int* exp);
参数说明

x:传入的浮点数,即欲被拆分的数;

exp:传入指向整型变量的指针,用于存储拆分出来的指数部分。

返回值说明

frexp() 函数返回原始数据 x 的尾数部分,并将指数部分通过参数传递。这个返回的尾数是在 [0.5, 1) 之间的一个浮点数。

示例

下面是一个简单的示例,演示如何使用 frexp() 函数。

#include <iostream>
#include <cmath>

int main()
{
    double x = 1234.5678;
    int exp = 0;
    
    double fp = std::frexp(x, &exp);
    
    std::cout << "拆分前的数: " << x << std::endl;
    std::cout << "拆分后的尾数: " << fp << std::endl;
    std::cout << "拆分后的指数: " << exp << std::endl;
    
    return 0;
}

输出结果如下:

拆分前的数: 1234.57
拆分后的尾数: 0.964883
拆分后的指数: 11

以上代码中,我们将 1234.5678 这个浮点数传递给 frexp() 函数,其中 &exp 是一个指向整型变量 exp 的指针。在函数执行完毕后,fp 保存了返回的浮点数尾数,exp 则保存了指数。这里输出的结果表明,1234.5678 的拆分后,其指数为 11,尾数为 0.964883

注意事项
  • frexp() 函数只能接收浮点数类型的参数。
  • exp 参数不能为 null。
  • 返回的尾数是一个浮点数,因此需要使用浮点数类型的变量来保存其返回值。
参考资料