目标c中的双精度模数

时间:2012-09-08 10:07:00

标签: objective-c xcode double modulo

  

可能重复:
  How to make a modulo operation in objective-c / cocoa touch?

有人可以向我解释为什么“myModValue”的值是1.73472e-18 但是当x为0.1或0.4时,它正确为0? 有没有更好的方法来获得两个双精度的模数值?

double x = 0.3;
double y = 0.1;
double myModValue = fmod(x, y);

谢谢迈克尔

编辑: 尝试上面的代码硬编码(所以没有我的项目变量的值),结果是0.1 我不知道为什么......

1 个答案:

答案 0 :(得分:1)

由于舍入误差,浮点数不精确准确,值1.73472e-18在浮点项中基本上为0。这就是为什么你不应该将浮点数与==进行比较。

另见this answer