我不被允许使用mod。我认为这不起作用,因为我正在使用双打;有没有解决的办法? ---评论区域工作
void displayResults(double num1, char oper, double num2)
{
switch(oper)
{
case '+' :
cout << num1 << "+" << num2 << "=" << (num1+num2) << endl;
break;
case '-' :
cout << num1 << "-" << num2 << "=" << (num1-num2) << endl;
break;
case '*' :
cout << num1 << "*" << num2 << "=" << (num1*num2) << endl;
break;
case '/' :
if ( num1==0 || num2==0)
cout <<"A number divided by 0 or divided into 0 is always 0"<< endl;
else
cout << num1 << "/" << num2 << "=" << (num1/num2) /*+ (num1%num2) */ << endl;
break;
// case '%' :
// cout << num1 << "%" << num2 << "=" << (num1%num2);
//break;
}
}
答案 0 :(得分:5)
使用std::fmod
。它有双重超载:
#include <cmath>
std::fmod(num1, num2);
答案 1 :(得分:1)
模数运算符%
是一个整数函数。
您需要使用fmod
作为浮点数。
答案 2 :(得分:0)
%
仅允许使用整数类型或无范围的枚举,您可以将std::fmod用于 double :
#include <cmath>
#include <iostream>
int main() {
double num1 = 5.5;
double num2 = 3.0;
double z = std::fmod(num1,num2);
std::cout << z << std::endl ;
return 0;
}
答案 3 :(得分:0)
当然,您可以重载'%'运算符以对您喜欢的任何类型执行模数运算。但是,双语的语言没有内置支持。
答案 4 :(得分:0)
我认为你可以用'long int'替换你的双打,这将帮助你克服错误,这也适用于所有基于整数的操作。
我在我的一个代码中做了这个更改并且做对了,但是发出了警告。但它确实工作得很好,所以试试,它应该可以很好地工作。