双打不能使用模数?

我有一个C ++程序(使用g ++编译)。 我试图将两个双打作为操作数模数函数,但我得到以下错误:

错误:types'double'和'double'的操作数无效到二进制'operator%'

代码如下:

int main() { double x = 6.3; double y = 2; double z = x % y; } 

%运算符是整数。 你正在寻找fmod()函数 。

 #include <math.h> int main() { double x = 6.3; double y = 2.0; double z = fmod(x,y); return 0; } 

fmod(x, y)是你使用的函数。

使用<cmatch> fmod() 。 如果你不想包含C头文件:

 double dmod (double x, long long mod) { return static_cast<long long>(x) % mod + x - static_cast<long long>(x); } 

或者更通用的方法( T不能是floatdouble float ):

 template<typename T, typename U> constexpr T dmod (T x, U mod) { return static_cast<long long>(x) % mod + x - static_cast<long long>(x); }