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

| 这就是我通过2 * M_PI检查数字的可除性所做的工作。 \“ w \”是一个2/3的常数,t是随t + = dt变化的变量,其中dt是0.1。我正在尝试使用mod运算符%来查看是否可整除。但是它不起作用。 布尔可除 实数w = 2/3; 实t
if((w*t) % 2*M_PI == 0)
    {
        divisible = true;
    }

else
    {
        divisible = false;
    }
这是我得到的错误,“类型为'real'和'int'的无效操作数为二进制'operator%'\” 这是什么意思?我该如何工作?那么我需要将w和t设为int吗?它们之所以不可以是因为w是2/3,并且t从0递增0.1。有人可以帮帮我吗?     
已邀请:
        而是使用
std::fmod
,它以双精度运算,而不是整数
%
运算符。     
        \'%\'是整数模运算符,不适用于浮点/双参数/操作数 math.h中存在一个float / double modf函数,可能会有所帮助 一个例子可以在例如 http://www.cplusplus.com/reference/clibrary/cmath/modf/     
        您为什么想知道浮点数是否可以被另一个整数整除? 浮点算法不应用于“精确”计算。严格定义了每个操作的结果,但与同一操作的数学含义不同。 尤其是:
double a = 1e20;
double b = 1e-20;

double c = (a + b) - a;
您可能希望
c
等于
b
,但实际上不会! 您只应将浮点数与某个窗口进行比较。意思是-特定的浮点值是否在某个有限长度范围内。     

要回复问题请先登录注册