如何检查float变量是否包含整数值?到目前为止,我一直在使用:
float f = 4.5886; if (f-(int)f == 0) printf("yes\n"); else printf("no\n");
但我不知道是否有一个更好的解决方案,或者如果这个有任何(或许多)缺点。
解决方法
除了已经给出的精细答案,你还可以使用ceilf(f)== f或floorf(f)== f。如果f是一个整数,两个表达式都返回true。它们对于NaN(
NaNs always compare unequal)返回false,对于±无穷大返回true,并且没有溢出用于保存截断结果的整数类型的问题,因为floorf()/ ceilf()返回浮点数。