0

modの使用は許可されていません。double を使用しているため、機能していないと思います。これを回避する方法はありますか?--- コメント領域が機能しない

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;
     }

}
4

5 に答える 5

5

を使用しstd::fmodます。double のオーバーロードがあります。

#include <cmath>

std::fmod(num1, num2);
于 2013-10-21T19:31:05.273 に答える
1

モジュラス演算子%は積分関数です。

fmod浮動小数点に使用する必要があります。

于 2013-10-21T19:31:30.233 に答える
1

%は整数型またはスコープのない列挙型に対してのみ許可されます。 doubleにはstd::fmodを使用できます。

#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;
}
于 2013-10-21T19:31:41.773 に答える
0

double を 'long int' に置き換えると、エラーを克服するのに役立ち、これはすべての整数ベースの操作でも機能すると思います。

私は私のコードの1つでこの変更を行い、それを正しくしましたが、警告がありました. しかし、それはうまくいったので、試してみてください。かなりうまくいくはずです。

于 2013-10-21T19:36:53.893 に答える