objective-c中的对偶模

objective-c中的对偶模,objective-c,xcode,double,modulo,Objective C,Xcode,Double,Modulo,可能重复: 有人能解释一下为什么这里“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.73472e-18的值在浮点术语中基本上是0。这就

可能重复:

有人能解释一下为什么这里“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.73472e-18的值在浮点术语中基本上是0。这就是为什么不应该将浮点值与==进行比较


另请参见。

@Monolo否。这里只解释了如何使用双值进行模运算。所以我认为fmod()是正确的函数,但是我得到了这个无法解释的结果^^^,对值进行编码意味着计算是由编译器完成的,并以某种方式进行四舍五入-结果为零。