这是检查模数的代码:
float module = fmod(self.count_bar, 0.3);
NSLog(@"module:%f", module);
if (module == 0){
NSLog(@"MODULEEEEE");
}
" self.count_bar"是一个双倍,我在计时器中增加,但当它到达" 0.3",它没有打印" MODULEEEE",我不明白......为什么呢?
答案 0 :(得分:0)
比较浮点类型的平等几乎总是会使你感到灼伤(即使对于其他比较,也可能是危险的,具体取决于上下文)。这是因为计算机存储浮点数并执行比较。
您可以切换比较以检查模块> 0,那么条件将为false,直到self.count_bar达到0.3然后将为真。如果这不是你想要的,那么你可以计算模块和0之间的差值的绝对值,并选择一个阈值(0.01,0.001,0.0001等,取决于你正在做什么)来说“足够接近” “。当差异的绝对值小于阈值时,请显示您的信息。