| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 666 人关注过本帖
标题:求助!!!!!理解一个求一元二次根的程序!!!谢谢啦。。。
只看楼主 加入收藏
百年孤独8c
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-3-18
结帖率:0
收藏
 问题点数:0 回复次数:6 
求助!!!!!理解一个求一元二次根的程序!!!谢谢啦。。。
就是如下程序为什么要是趋近10的-6次方就代表趋近于0 说是float 有效小数位7位  我知道但如果0.00000001111之类的不就是直接当0赋值给了他么 那0还是可以啊??一直想不通。。。。求高手帮助
#include  "math.h"
main()
{float a,b,c,disc,x1,x2,p,q;
  scanf(“%f,%f,%f”, &a, &b, &c);
  disc=b*b-4*a*c;

  if (fabs(disc)<=1e-6)            /*fabs():求绝对值库函数*/          这句
       printf(“x1=x2=%7.2f\n”, -b/(2*a));    /*输出两个相等的实根*/
  else
      { if (disc>1e-6)
           {x1=(-b+sqrt(disc))/(2*a);        /*求出两个不相等的实根*/
             x2=(-b-sqrt(disc))/(2*a);
             printf("x1=%7.2f,x2=%7.2f\n", x1, x2);
           }
   else
     {p=-b/(2*a);                /*求出两个共轭复根*/
      q=sqrt(fabs(disc))/(2*a);
      printf(“x1=%7.2f + %7.2f i\n“, p, q);    /*输出两个共轭复根*/
       printf(”x2=%7.2f - %7.2f i\n“, p, q);
     }
   }
}
搜索更多相关主题的帖子: include 绝对值 
2012-04-06 17:00
于祥
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:5
帖 子:1047
专家分:4132
注 册:2011-4-24
收藏
得分:0 
我知道但如果0.00000001111之类的不就是直接当0赋值给了他么 那0还是可以啊??//什么意思你的这句话?我咋不懂

最基础的往往是你最容易忽略的!
2012-04-06 23:38
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
disc真的赋值为零当然可以,但这个数是运算出来的,你知道它运算后的值是不是真的零?浮点数的运算,不是你用纸笔算那样的。初学,你只要知道:对浮点数不能精确判断零,即无法用disc==0.0。在某些别的编程语言中,确实可以这样判断,但在C/C++中,不行。

授人以渔,不授人以鱼。
2012-04-07 00:06
cuijunchao
Rank: 5Rank: 5
来 自:湖南桂东
等 级:职业侠客
威 望:3
帖 子:132
专家分:386
注 册:2012-4-4
收藏
得分:0 
有效值是七位,你用零也是可以的,但用e-6 更为准确。一般对于求精度的问题用e-x好意些,至少理论上更合情,这里用零也有用是有效值的问题,float 型的10e-7与零相等的。
2012-04-07 00:20
百年孤独8c
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-3-18
收藏
得分:0 
回复 2楼 于祥
就是如果判别式算出来是0.00000001111这个结果而disc是float型的变量其装不下这个长度。。。(我编了个程序试过了其最终disc的数值是0)
那么他这是以1e-6代替当判别式为0时候,我觉得就没必要写这个直接写fabs(disc)==0这个。。。也行嘛???是不是错了。。。。
2012-04-07 16:33
百年孤独8c
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-3-18
收藏
得分:0 
回复 4楼 cuijunchao
既然已经赋值给了disc就不存了精度的考虑了吧。。这样理解对吗??
2012-04-07 16:36
百年孤独8c
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-3-18
收藏
得分:0 
回复 3楼 TonyDeng
对啊  我记得我以前查过float的编码  好复杂的样子  知道了无法精确的表示  就这样的话    理解了  灰常感谢   TonyDeng     嘿嘿
2012-04-07 16:42
快速回复:求助!!!!!理解一个求一元二次根的程序!!!谢谢啦。。。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015107 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved