千家信息网

C语言浮点函数中的modf和fmod怎么用

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章给大家分享的是有关C语言浮点函数中的modf和fmod怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。modf函数可以提取出浮点数的整数部分和小数部分。fmod
千家信息网最后更新 2025年11月07日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; i<100; i++)        {                j+=0.1;                printf("%f \n",j);        }        return(0);}

给一个浮点数1.0每次累加0.1,总共累加100,感觉就是一个简单的加法运算,它的输出结果肯定也知道是什么了,下面来运行一下这个代码,输出结果如下:

看到结果的第一眼,是不是感觉计算机算错了?怎么算着算着结果还给跑偏了。其实计算机并没有算错,程序运行的结果也是正确的。这里使用一个在线浮点数转换工具验证一下。

首先看一下浮点数1.0在内存的存储情况。

再看一下浮点数2.8在内存的存储情况。

通过对比可以看出1.0的实际存储值是1,和真实值是一样的。2.8的实际存储值是2.7999999523162841796875,和真实值已经产生了一点误差。那么这个误差是什么引起的呢?这里就要从浮点数的存储原理说起了。

通在C语言中,一个浮点数占32位,其中第一位表示符号位,0表示正数,1表示负数。紧接着8位表示指数部分,也就是系统会将浮点数表示为指数计数法,这8位就是指数部分的值,但是这里的指数是以2为底的。剩下的23位表示的就是尾数,也就是有效数据。

由于小数部分都是通过 2^a+2^b+2^c.......2^n 这种指数的累加来实现的,而指数的累加不一定可以百分百的等于原值,它只可能无限的接近原值。所以对于浮点数的操作不是像整数那样简单,为了保证操作浮点数时的精度,所以C语言的库函数才给我们提供了这两种浮点数操作的函数,方便使用。

接下来看一下modf函数的用法。

#include #include int main (){        double x, fractpart, intpart;        x = 8.123456;        fractpart = modf(x, &intpart);        printf("整数部分= %lf\n", intpart);        printf("小数部分 = %lf \n", fractpart);        return(0);}

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

通过输出结果可以看到,浮点数的整数部分和小数部分精度都没有丢失。

再看一下fmod函数的用法。

#include #include int main (){   float 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函数有两个参数,第一个参数是分子,第二个参数是分母,它返回第一个参数除以第二个参数的余数。

通过输出的结果可以看到,浮点数的精度没有丢失。

感谢各位的阅读!关于"C语言浮点函数中的modf和fmod怎么用"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

点数 函数 部分 参数 结果 指数 存储 语言 两个 小数 整数 余数 输出 就是 精度 浮点 也就是 内存 内容 原值 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全技术及应用期末论文 大公司的服务器有多少台 软件开发企业小规模账务处理 昆山电脑网络技术员 软件开发的logo图片 东北师范大学图书馆数据库 未来网络安全的前景 邮件服务器 集群 青海网络营销软件开发定制平台 上海翼葵网络技术怎么样 软件开发企业计划书前言 我的世界1.16.2怎么自己创服务器 鄙视图片素材软件开发 阿里云服务器是正品吗 房地产数据库软件完整中文版 网络安全为人民手抄报的字 jdbc是如何链接数据库的 数据库应用技术的思维导图 检查数据库日志的命令 大连众安保险软件开发评价 网络安全与校园欺凌教学设计 服装销售数据库业务逻辑 数据库安全 百度百科 网络安全自查总结怎么写 美国网络安全市值公司排名 第二批一流网络安全学院授牌 网络安全证书中级 vs 2017中新建数据库 一个文件管理系统的数据库设计 网络技术宣传文案
0