,,C语言浮点函数中的modf和fmod详解

,,C语言浮点函数中的modf和fmod详解

本文主要详细介绍了C语言浮点函数中的modf和fmod。本文中的示例代码非常详细,具有一定的参考价值。感兴趣的朋友可以参考一下,希望能帮到你。

modf函数可以提取浮点数的整数和小数部分。fmod函数可以返回两个浮点数相除的余数。它们的功能原型如下:

double __cdecl modf(double _X,double * _ Y);

double __cdecl fmod(double _X,double _ Y);

这两个函数的作用看起来挺简单的,但是为什么一定要在C语言库中做一个特殊的函数来计算呢?在使用这两个函数之前,先看一个简单的浮点数相关的例子。

int main()

{

int I;

float j=1.0

for(I=0;i100我)

{

j=0.1

printf('%f \n ',j);

}

return(0);

}

一个浮点数1.0每次加0.1,总计100,感觉就是一个简单的加法运算,它的输出结果肯定知道是什么。让我们运行这段代码,输出结果如下:

乍一看,是不是感觉电脑算错了?你是怎么数的?结果走火了。其实计算机没有出错,程序的结果是正确的。这里用一个在线浮点数转换工具来验证一下。

首先看浮点数1.0在内存中的存储。

看看浮点数2.8在内存中的存储。

通过对比可以看出,1.0的实际存储值为1,与真实值相同。2.8的实际存储值是2.799995362841796875,和真实值已经有了一点误差。那么是什么导致了这个错误呢?这里我们就从浮点数的存储原理说起。

在一般的C语言中,一个浮点数占用32位,其中第一位代表符号位,0代表正数,1代表负数。接下来8位表示指数部分,也就是浮点数会用指数计数来表示。这8位是指数部分的值,但是这里的指数是基于2的。剩下的23位代表尾数,是有效数据。

因为小数部分是通过2个2^a 2^b 2^c的累加来实现的.2^n 2 N,指数的累加不一定100%等于原值,但也只能无限接近原值。所以浮点数的运算没有整数那么简单。为了保证浮点数的准确性,C语言的库函数为我们提供了这两个浮点数运算函数,使用起来很方便。

我们来看看modf函数的用法。

#包含stdio.h

#包含数学. h

int main()

{

双x,fractpart,intpart

x=8.123456

fractpart=modf(x,int part);

Printf('整数部分=%lf\n ',int part);

Printf('小数部分=%lf \n ',fract part);

return(0);

}

modf函数有两个参数。第一个参数是要操作的浮点数,第二个参数用于存储浮点数的整数部分。它的返回值是浮点数的小数部分。

从输出结果可以看出,浮点数的整数和小数部分的精度没有损失。

再看看fmod函数的用法。

#包含stdio.h

#包含数学. h

int main()

{

浮动a,b;

int c;

a=9.0

b=3.7

c=2;

printf(' % f/% f '的余数是%lf\n ',a,b,fmod(a,b));

printf(' % f/% d '的余数是%lf\n ',a,c,fmod(a,c));

return(0);

}

fmod功能有两个参数。第一个参数是分子,第二个参数是分母。它返回第一个参数除以第二个参数的余数。

从输出结果可以看出,浮点数的精度并没有损失。

总结

本文到此为止。希望能帮到你,也希望你能多关注我们的更多内容!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • 详解c语言中的字符串数组是什么,详解c语言中的字符串数组结构,详解C语言中的字符串数组
  • 表达式求值c++实现,c语言实现表达式求值
  • 看懂c语言基本语法,C语言详解,C语言的基本语法详解
  • 用c语言实现快速排序算法,排序算法设计与实现快速排序C语言,C语言实现快速排序算法实例
  • 深入解析c语言中函数指针的定义与使用方法,深入解析c语言中函数指针的定义与使用情况,深入解析C语言中函数指针的定义与使用
  • 描述E-R图,E-R图举例,关于C语言中E-R图的详解
  • 折半查找法C语言,折半查找算法(算法设计题)
  • 折半查找法C语言,c语言折半法查找数据,C语言实现折半查找法(二分法)
  • 扫雷小游戏c++代码设计,c语言扫雷游戏源代码,C语言实现扫雷小游戏详细代码
  • 怎样统计程序代码行数,C语言统计行数,C#程序员统计自己的代码行数
  • 基于c语言的贪吃蛇游戏程序设计,用c语言编写贪吃蛇游戏程序,C语言实现简单的贪吃蛇游戏
  • 图的两种遍历算法,图的遍历算法代码c语言,Python算法之图的遍历
  • 留言与评论(共有 条评论)
       
    验证码: