我有一个C++程序(使用g ++编译).我正在尝试将两个双精度数作为操作数应用于模数函数,但是我得到以下错误:
错误:类型'double'和'double'到二进制'operator%'的操作数无效
这是代码:
int main() {
double x = 6.3;
double y = 2;
double z = x % y;
}
Run Code Online (Sandbox Code Playgroud)
Mys*_*ial 262
该%
运营商是整数.你正在寻找这个fmod()
功能.
#include <cmath>
int main()
{
double x = 6.3;
double y = 2.0;
double z = std::fmod(x,y);
}
Run Code Online (Sandbox Code Playgroud)
您可以实现自己的模函数来为您做到这一点:
double dmod(double x, double y) {
return x - (int)(x/y) * y;
}
Run Code Online (Sandbox Code Playgroud)
然后您可以简单地使用dmod(6.3, 2)
来获取余数,0.3
。
使用fmod()
从<cmath>
.如果您不想包含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);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
163215 次 |
最近记录: |