如何检查数字是否可以被c ++中的2 * M_PI整除?

时间:2011-05-30 09:53:45

标签: c++ division pi

这是我用2 * M_PI检查数字的可分性所做的。 “w”是2/3的常数,t是变量t + = dt的变量,其中dt是0.1。我正在尝试使用mod运算符%来查看某些内容是否可以被整除。但它不起作用。

博尔可分割; 真实w = 2/3; 真实的;

if((w*t) % 2*M_PI == 0)
    {
        divisible = true;
    }

else
    {
        divisible = false;
    }

这是我得到的错误,“类型'真实'和'int'到二进制'运算符%'的无效操作数”

这是什么意思?我如何让它工作?所以我需要使用w和t吗?它们不能是因为w是2/3,并且t从0递增0.1。有人可以帮助我吗?

3 个答案:

答案 0 :(得分:3)

使用std::fmod代替,它使用双精度而不是整数%运算符。

答案 1 :(得分:2)

'%'是整数模运算符,不适用于float / double arguments / operands

math.h中存在一个float / double modf函数,可能有帮助

答案 2 :(得分:2)

为什么你想知道浮点数是否完全可被另一个整除?

浮点算术不应用于“精确”计算。每个操作的结果都是严格定义的,但它与同一操作的数学含义不同。 特别是:

double a = 1e20;
double b = 1e-20;

double c = (a + b) - a;

您可能希望c等于b,但事实上它不会![/ p>

您应该只将浮点数与某个窗口进行比较。均值 - 特定浮点值是否在某个有限长度范围内。