目录
- 一 先来看一段代码
- 二 如何解决
- (1)浮点数的大小比较
- (2)含浮点数的表达式和0.0的比较
- 总结
一 先来看一段代码
#include<stdio.h>
int main()
{
double test=0.1;
printf("%.100lf",test);
return 0;
}
运行结果:

直接从现象说结果:精度丢失由于计算机二进制转化过程中因为比特位过多发生数据的截断导致的,这个结果是可以偏大也可以偏小的。
解释一下:首先要知道二进制转换为十进制的基本方法(除二取余法,乘五取余法等等),最好再了解一下浮点数的存储,这里的0.1就是一个典型的例子,对0.1乘五取余是乘不尽的,那么数据转化成的二进制序列的长度就会超出double的范围。那么多出的数据就会被截断。
二 如何解决
如果你想的是彻底让屏幕显示出来的是0.1,那么,你不孤单,我一开始也是这样想的,但是这是不可能的。但是这个对我们的实际意义不大,毕竟有效的区段还是够的。
我在这里具体要解决的是两个问题
(1)浮点数的大小比较
#include<stdio.h>
int main()
{
double test=0.1;
if(test==(1-0.9))
{
printf("正常");
}
else
{
printf("what!!!");
}
return 0;
}
这段代码会输出“what!”。为什么上面已经说了0.1乘不尽,这里换成0.5是OK的,因为0.5D用二进制表示就是0.1B。每次都考虑乘不尽不烦吗?
解决方案
引入库函数<float.h>里定义的宏DBL_EPSILON。
这里后面的一段英文是他是导致x+n!=x的最小值 (n代表EPSILON伊普西隆,x是任意值)
也就是说,任意一个比EPSILON小的值,你给一个数加上,都不会改变它的值。
那么,比EPSILON小的值引起的精度丢失都是在我们的允许范围内的
#include<stdio.h>
#include<float.h>
#include<math.h>
int main()
{
double test = 0.1;
if (fabs(test - (1 - 0.9)) < DBL_EPSILON)
{
printf("正常");
}
else
{
printf("what!!!");
}
return 0;
}
上图有两个点
1 。在<math.h>下的fabs(a)即取a的绝对值
想象一根数轴,他们相减的绝对值就是他们的距离
2 。 if(fabs(test-(1-0.9)<DBL_EPSILON))
等价于(test==1-0.9)(当然是对我们 人 而言)
test和(1-0.9)的距离若是小于DBL_EPSILON,那么精度的丢失是在可控范围内的,说明他们俩相等
(2)含浮点数的表达式和0.0的比较
要先把上面的搞明白。
之所以单独说这个问题,我是想强调一个数字与零作比较到底应该是a<DBL_EPSILON还是a<=DBL_EPSILON,加强一下理解
EPSILON是允许范围内的最小值(回到宏定义后面的解释),所以这个等于不可以加,加了说明上面的a如果等于EPSILION时,会导致数值的改变。
想要彻底解决精度丢失,是不可能的,也没必要,但我们有办法用近似来解决。
如果看完这篇文章你还是很迷糊,但我还是想说这是不能彻底解决的(我一开始也有这种想法),那么希望下次我准备出的数据的存取能对你有帮助。篇幅太长了,所以删删减减还是准备放到下次。
总结
相关推荐:
SEO小白必看!从零起步SEO的秘诀,轻松提升网站排名,南京网站运营优化平台
为什么“搜狗不收录”会成为企业SEO的新挑战?,烤肉店的线下营销与推广
SEO能够助力网站流量增长,提升品牌竞争力,Seo网站排名原理
seo网络推广要做什么,seo 网络推广 ,ai少女喝药
ChatGPT连了外网也登不了?如何解决这一问题,重新畅享AI助力!,ai少女大瓜
seo诊断什么意思,seo诊断a5 ,约瑟夫ai
seo需要什么部门,seo主要干什么 ,ai接入仪器
ChatGPT打不开实时问题解决方案:让你的AI助手始终在线,psd 转ai
SEO部:开启数字化营销新纪元的幕后英雄,株洲营销推广是什么公司
2025年SEO最新技术:让你的网站脱颖而出!,ai少女特色
SEO外,如何提升网站整体营销效果?,文轩网络营销推广方案
ChatGPT免费版下载:智能对话助手带来的全新体验,电脑怎么下载Ai微认证
高效创作新时代AI文案速写工具,让创作更轻松
SEO自行:提升网站流量的秘密武器,邹平县个人网站建设建议
二创AI:打破创意壁垒,引领未来内容创作新潮流,背影教案网站建设游戏
SEO合作:让你的网站在搜索引擎中脱颖而出,惠州抖音seo策划公司
用AI写文章,释放你的创作潜力!
软件我在AI:改变未来的智能助手
AI缩写文本:助力智能生活的革新力量,ai智能写作生成神器下载
用AI写文,开启创作新时代
SEO师:如何在数字时代为企业赢得流量与销量,十堰网站关键词优化教程
SEO妍:搜索引擎优化的艺术,轻松打造网络营销新未来,辽宁网站建设贵不贵
seo种草什么意思,seo yoo na ,三维地震反演AI
为什么做seo的人很少,为了什么做seo ,ai不负你
亚马逊站内seo是什么优化,亚马逊seo关键词优化软件 ,ai画卡通章鱼
文字生成AI:开启创意写作的新纪元
SEO要点:提升网站排名的核心技巧与策略,福田市网站建设推广费用
SEO特点与实施策略:提升网站流量与排名的关键,定西抖音seo价格查询
ChatGPT网页打不开?快来看看这些解决办法,轻松恢复正常访问!,ai金色包装
怎么用AI生成文章免费版,高效创作从此开始!
GPT-3.5免费吗?揭秘AI智能助手的未来与收费模式,ai 美美
《命运交错的轨迹:小说背后的无尽魅力》,seo优化huifachina
AI一键生成文章在线:提升创作效率,改变写作方式
自动AI写文章:轻松创作时代的全新利器
怎么查一篇文章是不是AI写的?你需要这几个关键方法!
SEO运维:提升网站排名的核心战略,邢台网站建设优化建站
SEO有话:如何用精准优化助力企业在线增长,食品微信营销推广
AI+写文章:开启智能创作新时代
ChatGPT页面空白不乏登录:让你秒变职场高手与生活智囊,百度ai 腾讯ai
SEO王:掌控搜索引擎优化的至高法则,助力企业飞速腾飞,网站动作优化在哪里下载
用AI创作的文章算原创吗?深度背后的逻辑与意义
AI智能时代的到来:如何利用人工智能推动生活与商业创新,ai相册下载
AI批量文章工具,让写作变得高效与轻松,cs机器人ai
实用AI工具:提升效率、优化生活的科技利器
ChatGPT怎么找梯子:突破网络限制,轻松访问AI助手的终极指南,鬼灭之刃人物AI还原
SEO发明:引领数字时代营销革命的力量,速卖通外贸推广网站
创作新时代:自动生成文章AI的魅力与未来
SEO建议:如何通过优化提升网站流量,赢得市场竞争,自媒体网站免费推广平台
SEO软优化:助力网站实现流量爆发的秘密武器,延平区网页seo
ChatGPT40不收费版本:科技革新,智能助手助力生活与工作,ai医疗武器有哪些