C++でプログラムを作成しています(g ++を使用してコンパイルされています)。モジュラス関数のオペランドとして2つのdoubleを適用しようとしていますが、次のエラーが表示されます。
エラー:タイプ 'double'および 'double'からバイナリ 'operator%'への無効なオペランド
コードは次のとおりです。
int main() {
double x = 6.3;
double y = 2;
double z = x % y;
}
%
演算子は整数用です。 fmod()
function を探しています。
#include <cmath>
int main()
{
double x = 6.3;
double y = 2.0;
double z = std::fmod(x,y);
}
fmod(x, y)
は使用する関数です。
<cmath>
からfmod()
を使用します。 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);