C++ 浮点数比较大小 5

doublee1,X0,X1;键盘输入0.0000001之后,赋值给e1;有一些列运算......得X1-X0=0.09861230比较大小if(fabs(X1-X0)<... double e1,X0,X1;
键盘输入 0.0000001之后,赋值给e1;
有一些列运算......
得X1-X0 =0.09861230
比较大小
if(fabs(X1-X0)<e1)
{...}

明明就比e1 大 可是计算机运行 却是括号内的不等式成立
为什么啊啊?
展开
 我来答
百度网友6fe74e2
2013-05-07 · TA获得超过6593个赞
知道大有可为答主
回答量:1973
采纳率:100%
帮助的人:264万
展开全部

原因比较简单实际上

 

因为e1他当成了科学计数法: 1e1也就是10

 

当然fabs(X1-X0)<10成立

 

所以,你要解决这个问题,最好把变量e1改个名字改成   f1,然后就会得到正确结果了,

 

这种问题很难发现,而且跟编译器有关,你可以去查下c/c++科学计数法就明白了

 

比如1.2e2==1.2*10*10==120

 

当然,这种情况是很少见的,跟他编译器有关,一般来说现在的编译器不会出现这种问题,比如

 

VS2010 的话,就不会出现你所说的问题。

追问
我改成 f1 也还是那样
是键盘输入 ,不是定义
double f1;
cout>f1;
我要的是键盘输入
怎么解决啊
追答

没什么问题啊,

你输入什么,存入的值就是什么

所以你要看下

fabs(X1-X0)的值到底是多少,

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式