首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >不能在双精度上使用模数吗?

不能在双精度上使用模数吗?
EN

Stack Overflow用户
提问于 2012-02-04 14:02:39
回答 4查看 216.5K关注 0票数 218

我有一个用C++编写的程序(用g++编译)。我尝试将两个双精度数作为操作数应用到取模函数,但得到以下错误:

错误:'double‘和'double’类型的操作数对于二进制'operator%‘无效

代码如下:

代码语言:javascript
运行
复制
int main() {
    double x = 6.3;
    double y = 2;
    double z = x % y;
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-02-04 14:04:17

%运算符用于整数。你要找的是fmod() function

代码语言:javascript
运行
复制
#include <cmath>

int main()
{
    double x = 6.3;
    double y = 2.0;
    double z = std::fmod(x,y);

}
票数 314
EN

Stack Overflow用户

发布于 2012-02-04 14:05:38

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

票数 39
EN

Stack Overflow用户

发布于 2017-06-19 22:21:35

使用<cmath>中的fmod()。如果不想包含C头文件:

代码语言:javascript
运行
复制
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);
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9138790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档