双打不能使用模数?
我有一个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
不能是float
或double
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); }