我有一个用C++编写的程序(用g++编译)。我尝试将两个双精度数作为操作数应用到取模函数,但得到以下错误:
错误:'double‘和'double’类型的操作数对于二进制'operator%‘无效
代码如下:
int main() {
double x = 6.3;
double y = 2;
double z = x % y;
}
发布于 2012-02-04 14:04:17
%
运算符用于整数。你要找的是fmod()
function。
#include <cmath>
int main()
{
double x = 6.3;
double y = 2.0;
double z = std::fmod(x,y);
}
发布于 2012-02-04 14:05:38
fmod(x, y)
是您使用的函数。
发布于 2017-06-19 22:21:35
使用<cmath>
中的fmod()
。如果不想包含C头文件:
template<typename T, typename U>
constexpr double dmod (T x, U mod)
{
return !mod ? x : x - mod * static_cast<long long>(x / mod);
}
//Usage:
double z = dmod<double, unsigned int>(14.3, 4);
double z = dmod<long, float>(14, 4.6);
//This also works:
double z = dmod(14.7, 0.3);
double z = dmod(14.7, 0);
double z = dmod(0, 0.3f);
double z = dmod(myFirstVariable, someOtherVariable);
https://stackoverflow.com/questions/9138790
复制相似问题