注册 登录
编程论坛 C语言论坛

double数据类型遇到的问题

你爸边哭边 发布于 2019-07-16 20:24, 2581 次点击
编程是遇到这个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编辑过]

9 回复
#2
星i辰2019-07-16 20:28
a-0.001循环10次,也就是2-0.01,a不等于0,当然不输出yes
#3
吕孟伟2019-07-16 20:30
当然不会出现yes, 经过10次相减0.001,最后一个a值是1.990000.
#4
你爸边哭边2019-07-16 21:16
回复 2楼 星i辰
改成1000000也打印不了
#5
你爸边哭边2019-07-16 21:23
回复 3楼 吕孟伟
改了也打印不了
#6
你爸边哭边2019-07-16 21:35
感觉double类型跟0比较有问题
#7
wufuzhang2019-07-16 23:36
好像是浮点数不能表示绝对的0,只能用一个小数位数非常多的无限接近0的数来近似等于0,
用int型数据就可以表示绝对的0
#8
c小白23332019-07-17 20:29
7楼正解  
double 类型 数值无法准确确定
所以a 无论如何不会等于0
#9
c小白23332019-07-17 20:30
想要输出 yes  只有 将数值强制转换成int型
#10
你爸边哭边2019-07-18 14:21
谢谢各位了
1