| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2521 人关注过本帖
标题:浮点数精度问题,怎么才能保证累加不出现误差
取消只看楼主 加入收藏
q472440947
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2014-7-13
结帖率:100%
收藏
 问题点数:0 回复次数:6 
浮点数精度问题,怎么才能保证累加不出现误差
#include <stdio.h>
#include <conio.h>
main()
{
    float x,y;
    for(x=0.0;x<71.0;x=x+0.1)
        for(y=0.0;y<71.0;y=y+0.1)
        {
            if(x+y==71.00)
            {
                printf("%f,%f\n",x,y);
                getch();
            }
        }
       getch();

}
运行后为什么只有2个结果。x+y==71  不是应该有很多很多结果吗

改成for(x=0.0;x<71.0;x=x+1)   for(y=0.0;y<71.0;y=y+1)   加整数都能正常运行,但加零点几结果就不对了   为什么??
如果确定为浮点数精度问题  要求必须用浮点数 那怎么使用  才能实现x=x+0.1的累加不出现误差,

[ 本帖最后由 q472440947 于 2014-7-14 23:38 编辑 ]
搜索更多相关主题的帖子: include 
2014-07-13 11:05
q472440947
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2014-7-13
收藏
得分:0 
回复 2 楼 zhu224039
为什么我运行起来只有2个结果
2014-07-13 11:40
q472440947
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2014-7-13
收藏
得分:0 
回复 5 楼 wssy213
不用立即数是什么样子的  求大神赐教
2014-07-13 12:49
q472440947
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2014-7-13
收藏
得分:0 
回复 7 楼 周满悦
虽然没声明,但编译器可以识别,只是结果不对,运行出来只有2个结果
2014-07-14 00:06
q472440947
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2014-7-13
收藏
得分:0 
回复 10 楼 wssy213
等待你解决啊    我运行的结果只有28点几和42点几   其他的  比如1和70什么的为什么不输出来??
2014-07-14 00:24
q472440947
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2014-7-13
收藏
得分:0 
回复 13 楼 wssy213
现在能确定是精度问题了  那如果要求必须用浮点数,怎么才能保证程序顺利运行呢?
2014-07-14 23:34
q472440947
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2014-7-13
收藏
得分:0 
回复 17 楼 wssy213
用double 直接就没有输出了   怎么才能使用浮点数累加  而不出现误差?
2014-07-14 23:35
快速回复:浮点数精度问题,怎么才能保证累加不出现误差
数据加载中...
 
   



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

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