webentwicklung-frage-antwort-db.com.de

Kann das Modul nicht für Doppel verwendet werden?

Ich habe ein Programm in C++ (mit g ++ kompiliert). Ich versuche, zwei Doppelte als Operanden auf die Modul-Funktion anzuwenden, aber ich erhalte den folgenden Fehler:

fehler: ungültige Operanden der Typen 'double' und 'double' zu binärem 'operator%'

Hier ist der Code:

int main() {
    double x = 6.3;
    double y = 2;
    double z = x % y;
}
170
Bhaxy

Der Operator % Steht für Ganzzahlen. Sie suchen nach der Funktion fmod() .

#include <cmath>

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

}
255
Mysticial

fmod(x, y) ist die von Ihnen verwendete Funktion.

36
MSN

Benutze fmod() von <cmath>. Wenn Sie die C-Header-Datei nicht einschließen möchten:

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
Sceptical Jule