有人可以向我解释为什么这里“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 我不知道为什么......
有人可以向我解释为什么这里“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。这就是为什么您不应该将浮点数与 == 进行比较的原因。
另请参阅此答案。