#include
int main(int argc,char* argv[])
{
int i=0;
double m=0.10;
for(;i<=20;i++)
{
if(m==0.05*i)
printf("a\n");
}
return 0;
}
结果输出a
#include
int main(int argc,char* argv[])
{
int i=0;
double m=1.00;
for(;i<=20;i++)
{
if(m==0.05*i)
printf("a\n");
}
return 0;
}
结果空,不输出a
为什么啊
两者有什么区别啊?
两者有什么区别啊?
两者有什么区别啊?
我是在ubuntu下运行的
你第一行#include没报错?
我可以得到a啊,。,。。。。
首先,你没写头文件;
其次,我两个都可以输出啊。
最后而且最重要的是,你问对了,你这样写确实会出现错误。因为==是精确的比较,而浮点数在存放的时候存在舍入误差。如果想具体了解可以去蓝桥杯官网蓝桥杯大赛的辅导视频中观看关于浮点数的用法问题。或者http://blog.csdn.net/shandongdaya/article/details/8608568
1.膜拜楼上大牛,把我要说的都说出来了
2.确实是会有浮点数偏差的,比如0.05会按照0.049999999999999存放,这是由于计算机会按照二进制存储而不是完全精确的十进制存储。
所以才会是空值
http://blog.csdn.net/aya19880214/article/details/45891581。这个网址里有好东西
重新发一下地址
http://blog.csdn.net/aya19880214/article/details/45891581
多看看c/c++语言中不同类型变量与零值比较的问题吧