如何解决如何在C ++中检查数字是否可以被2 * M_PI整除?
| 这就是我通过2 * M_PI检查数字的可除性所做的工作。 \“ w \”是一个2/3的常数,t是随t + = dt变化的变量,其中dt是0.1。我正在尝试使用mod运算符%来查看是否可整除。但是它不起作用。 布尔可除 实数w = 2/3; 实tif((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
,但实际上不会!
您只应将浮点数与某个窗口进行比较。意思是-特定的浮点值是否在某个有限长度范围内。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。