这是我用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。有人可以帮助我吗?
答案 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>
您应该只将浮点数与某个窗口进行比较。均值 - 特定浮点值是否在某个有限长度范围内。