新人提问 GCC中关于。0的问题

#include
main()
{int cocks=0,hens,chicks;
while(cocks<=19)
{hens=0;
while(hens<=33)
{chicks=100-cocks-hens;
if(5.0*cocks+3.0*hens+chicks/3.0==100.0)
printf("%d %d %d\n",cocks,hens,chicks);
hens++;
}
cocks++;
}

}
在数字加.0为什么会差那么多

不加.0是整数运算 加.0是浮点运算 ,浮点存储格式本身就有误差所以运算也有误差

编译器在计算时,会将精度向精度高的数据类型转换。如果没有.0就是整数类型,有了就是浮点类型。但是浮点类型最好不用==来做判断!

如果不加,那么相当于整除。
比如说
8/3=2
8/3.0=2.66666...
两者差33%

+.0 数据就会自动被转换为浮点数,遵从浮点数的运算方式。