标题:double数据类型遇到的问题
只看楼主
你爸边哭边
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2017-10-30
结帖率:66.67%
已结贴  问题点数:18 回复次数:9 
double数据类型遇到的问题
编程是遇到这个double类型数据的有关问题
#include<stdio.h>
void main()
{
    double a=2;
    for(int i=0;i<100000;i++)
    {
        a=a-0.001;
        if(a==0)
            printf("yes");
    }
}
结果并不会显示yes,这个问题该怎么解决呢

[此贴子已经被作者于2019-7-16 21:17编辑过]

搜索更多相关主题的帖子: double 数据类型 int i++ 结果 
2019-07-16 20:24
星i辰
Rank: 2
等 级:论坛游民
威 望:1
帖 子:35
专家分:18
注 册:2016-11-1
得分:5 
a-0.001循环10次,也就是2-0.01,a不等于0,当然不输出yes
2019-07-16 20:28
吕孟伟
Rank: 8Rank: 8
等 级:贵宾
威 望:27
帖 子:200
专家分:870
注 册:2018-10-4
得分:5 
当然不会出现yes, 经过10次相减0.001,最后一个a值是1.990000.

借用一下侯捷的话:勿在浮沙筑高台。
2019-07-16 20:30
你爸边哭边
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2017-10-30
得分:0 
回复 2楼 星i辰
改成1000000也打印不了
2019-07-16 21:16
你爸边哭边
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2017-10-30
得分:0 
回复 3楼 吕孟伟
改了也打印不了
2019-07-16 21:23
你爸边哭边
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2017-10-30
得分:0 
感觉double类型跟0比较有问题
2019-07-16 21:35
wufuzhang
Rank: 9Rank: 9Rank: 9
来 自:广州
等 级:贵宾
威 望:21
帖 子:206
专家分:1346
注 册:2017-8-9
得分:5 
好像是浮点数不能表示绝对的0,只能用一个小数位数非常多的无限接近0的数来近似等于0,
用int型数据就可以表示绝对的0

不经历千百遍的调试,怎能体会成功时那一刹那的喜悦。
2019-07-16 23:36
c小白2333
Rank: 5Rank: 5
来 自:中国
等 级:贵宾
威 望:11
帖 子:121
专家分:367
注 册:2019-6-17
得分:5 
7楼正解  
double 类型 数值无法准确确定
所以a 无论如何不会等于0

宝剑锋从磨砺出,梅花香自苦寒来。
2019-07-17 20:29
c小白2333
Rank: 5Rank: 5
来 自:中国
等 级:贵宾
威 望:11
帖 子:121
专家分:367
注 册:2019-6-17
得分:0 
想要输出 yes  只有 将数值强制转换成int型

宝剑锋从磨砺出,梅花香自苦寒来。
2019-07-17 20:30
你爸边哭边
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2017-10-30
得分:0 
谢谢各位了
2019-07-18 14:21



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-495890-1-1.html




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

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