问题描述
- 新人提问 GCC中关于。0的问题
- #include
main()
{int cocks=0henschicks;
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 %dn""cockshenschicks);
hens++;
}
cocks++;
}}
在数字加.0为什么会差那么多
解决方案
不加.0是整数运算 加.0是浮点运算 ,浮点存储格式本身就有误差所以运算也有误差
解决方案二:
编译器在计算时,会将精度向精度高的数据类型转换。如果没有.0就是整数类型,有了就是浮点类型。但是浮点类型最好不用==来做判断!
解决方案三:
如果不加,那么相当于整除。
比如说
8/3=2
8/3.0=2.66666...
两者差33%
解决方案四:
+.0 数据就会自动被转换为浮点数,遵从浮点数的运算方式。
时间: 2025-01-01 11:55:11