C语言中的循环问题及浮点数与整数

img


这里的if括号中怎么才能避免浮点数与整数相等呢,因为有点编译器不承认浮点数与整数相等,所以怎么样才能避免这种情况呢

把结果强制转化为int型就好,也就是a = (int)b;
b是你那浮点数,这样操作就好了!

用减法设定一个值,当两者相差小于这个值就认为相等。
if(a-100<=1e-6)

1.什么叫不承认浮点数与整数相等,1.0==1在哪个编译器里都会承认的,不承认是因为计算有误差,你用1除以3再乘以3还等于1吗
2.这题里你构造好公式,是可以避免出现小数的
鸡雏3个价钱1,那你就应该for(c=0;c<100;c+=3)去循环,这样整数运算就足够了
3.如果必须进行浮点数与浮点数之间的相等比较,那么你只能两个相减,然后判断是否小于一个非常小的数,比如1e-6

使用强制类型转换,把浮点数转成整数或者把整数转成浮点数:
if((a5+b3+(1/3.0)c) == (float)100)
或者if((int)(a
5+b*3+(1/3.0)*c) == 100)