| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 295 人关注过本帖
标题:求解,有个小问题解决不了,心不安
只看楼主 加入收藏
w470913537k
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2012-10-29
结帖率:77.78%
收藏
已结贴  问题点数:20 回复次数:4 
求解,有个小问题解决不了,心不安
#include <stdio.h>
#include <math.h>

int main (void)
{
    float a=1,b=-(1+1.0e12),c=1.0e12,x1,x2,q;
    q=sqrt(b*b-4*a*c);
    x1=(-b+q)/(2*a);
    x2=c/(a*x1);
    printf("x1=%f\nx2=%f\n",x1,x2);
    return 0;
}
大家看下这个程序,是方程求根问题,我用float和double求出的结果是不一样的,有4000多的误差,是怎么回事呢,是因为float数值范围太小导致的吗,我觉得应该不是,float范围应该够用。
搜索更多相关主题的帖子: return include 
2012-10-29 22:58
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
应该是DOUBLE的是正确的
FLOAT的不够大

DO IT YOURSELF !
2012-10-29 23:01
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:20 
这是网上搜到的
仅参考:
 float和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”,由于它是不变的,故不能对精度造成影响。
  float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字;
  double:2^52 = 4503599627370496,一共16位,同理,double的精度为15~16位。


DO IT YOURSELF !
2012-10-29 23:06
w470913537k
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2012-10-29
收藏
得分:0 
回复 2楼 wp231957
嗯。谢啦,汗,我感觉float应该够用的,可能问题就出在这里吧
2012-10-29 23:13
w470913537k
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2012-10-29
收藏
得分:0 
回复 3楼 wp231957
谢咯。
2012-10-29 23:13
快速回复:求解,有个小问题解决不了,心不安
数据加载中...
 
   



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

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