详解C语言的exp()函数和ldexp()函数以及frexp()函数

 更新时间:2015年08月28日 10:46:14   投稿:goldensun  
这篇文章主要介绍了详解C语言的exp()函数和ldexp()函数以及frexp()函数,注意这三个函数虽然看起来相似但实际功能却大相径庭!需要的朋友可以参考下

C语言exp()函数:e的次幂函数(以e为底的x次方值)
头文件:

#include <math.h>

exp()用来计算以e 为底的x 次方值,即ex 值,然后将结果返回。其原型为:

  double exp(double x);

【返回值】返回 e 的x 次方计算结果。

注意,使用 GCC 编译时请加入-lm。

【实例】计算e的10次方的值。

#include <math.h>
main(){
  double answer;
  answer = exp (10);
  printf("e^10 =%f\n", answer);
}

运行结果:

e^10 = 22026.465795

C语言ldexp()函数:返回x乘上2的exp次方的值
头文件:

#include <math.h>

ldexp()用来求一个数乘上2的exp次方的值,原型为:

double ldexp(double x, int exp);

【参数】x 为尾数,exp 为幂数。

设返回值为 ret,则 ret =  x * 2exp

【返回值】返回 ret。

注意,使用 GCC 编译时请加入-lm。

【范例】计算3*(2^2) 的值。

#include <math.h>
main(){
  int exp;
  double x, answer;
  answer = ldexp(3, 2);
  printf("3*2^(2) = %f\n", answer);
}

运算结果:

3*2^(2) = 12.000000

C语言frexp()函数:把一个浮点数分解为尾数和指数
头文件:

#include <math.h>

frexp()用来把一个数分解为尾数和指数,其原型为:

  double frexp(double x, int *exp);

【参数】x 为待分解的浮点数,exp 为存储指数的指针。

设返回值为 ret,则 x = ret * 2exp,其中 exp 为整数,ret 的绝对值在 0.5(含) 到 1(不含) 之间。

如果 x = 0,则 ret = exp = 0

【返回值】将尾数 ret 返回。

注意,使用 GCC 编译时请加入-lm。

请看下面的代码:

#include <stdio.h>   /* printf */
#include <math.h>    /* frexp */
int main ()
{
  double param, result;
  int n;
  param = 8.0;
  result = frexp (param , &n);
  printf ("%f = %f * 2^%d\n", param, result, n);
  return 0;
}

输出结果:

8.000000 = 0.500000 * 2^4

将第 7 行 param 的值改为 242.354,则输出结果为:
242.354000 = 0.946695 * 2^8

相关文章

  • Ubuntu16.04下配置VScode的C/C++开发环境

    Ubuntu16.04下配置VScode的C/C++开发环境

    这篇文章主要介绍了Ubuntu16.04下配置VScode的C/C++开发环境的教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • C++小练习之高性能实现字符串分割

    C++小练习之高性能实现字符串分割

    字符串分割是日常工作中比较常见的基础函数,通常大家会使用现成的基础库,基础库的性能是否是最佳的,本文主要和大家探讨一下如何最大限度的提升字符串分割的性能,希望对大家有所帮助
    2023-10-10
  • C语言杨氏矩阵查找算法实例讲解

    C语言杨氏矩阵查找算法实例讲解

    杨氏矩阵是一个数字矩阵,矩阵的每一行从左到右一次递增,矩阵从上到下递增,在这样的矩阵中查找一个数字是否存在。时间复杂度小于O(N),有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-09-09
  • C++实现保存数据至EXCEL

    C++实现保存数据至EXCEL

    这篇文章主要介绍了C++实现保存数据至EXCEL,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • C语言开发简易版扫雷小游戏

    C语言开发简易版扫雷小游戏

    本文给大家分享的是一个使用C语言开发的命令行下的简易版扫雷小游戏,本身没有什么太多的技术含量,只不过是笔者的处女作,所以还是推荐给大家,希望对大家学习C能够有所帮助。
    2015-12-12
  • C++中函数使用的基本知识学习教程

    C++中函数使用的基本知识学习教程

    这篇文章主要介绍了C++中函数使用的基本知识学习教程,涵盖了函数的声明和参数以及指针等各个方面的知识,非常全面,需要的朋友可以参考下
    2016-01-01
  • C语言链表详解及代码分析

    C语言链表详解及代码分析

    这篇文章主要介绍了C语言链表详解及代码分析,说明了链表的定义与概念,通过详细的代码展示了基于链表的增删改查功能,希望本文能对你有所帮助
    2021-06-06
  • Qt+OpenCV利用帧差法实现车辆识别

    Qt+OpenCV利用帧差法实现车辆识别

    所谓帧差法也就是对连续图像帧做差分运算,其结果与定义好的阈值比较,若大于阈值则为运动目标值为1,否则值为0 。本文将利用帧差法实现车辆识别,感兴趣的可以了解一下
    2022-08-08
  • 虚函数与纯虚函数(C++与Java虚函数的区别)的深入分析

    虚函数与纯虚函数(C++与Java虚函数的区别)的深入分析

    本篇文章是对虚函数与纯虚函数进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • C++学习之指针的使用详解

    C++学习之指针的使用详解

    这篇文章主要为大家详细介绍了C++中指针的相关知识,文中的示例代码讲解详细,对我们的学习或工作有一定的价值,感兴趣的小伙伴可以了解一下
    2023-03-03

最新评论