Fmod为While循环条件错误

时间:2016-08-23 05:09:45

标签: c++ while-loop modulo math.h

我遇到了fmod()的问题,当与参数一起使用时,它不适合while循环中的条件。我重新创建了下面的代码段,这会导致与我的主程序相同的错误。

#include <math.h>
int main()
{
    double foo = 223.76;
    double bar = foo;
    while(fmod(bar,1.00) != 0)
    {
        bar += foo;
    }
    cout << bar << endl;
}

上面的代码应该最终停止并打印出5594,但它会持续到数百万。在每个步骤中打印出bar的值确实表明它达到了5594的值(如果你想测试它需要大约25步),所以我无法弄清楚它为什么不止于此。< / p>

1 个答案:

答案 0 :(得分:1)

这很可能是一个数字问题。所以它可能非常接近0但不完全等于0.所以请尝试while(fmod(bar,1.00) > 1e-10)