Ich habe ein Programm in C ++ (kompiliert mit g ++). Ich versuche, zwei Doppelte als Operanden auf die Modulfunktion anzuwenden, erhalte jedoch den folgenden Fehler:
Fehler: Ungültige Operanden vom Typ 'double' und 'double' zum binären 'Operator%'
Hier ist der Code:
int main() {
double x = 6.3;
double y = 2;
double z = x % y;
}
fmod(x,0.1)
dividiert x durch diesen genauen Bruch und nimmt den Rest, anstatt durch den numerischen Wert "ein Zehntel" zu dividieren.
fmod
zu unerwartetem Verhalten führen können. Zum Beispielfmod(1, 0.1);
sollte mathematisch Null sein, wird aber tatsächlich fast 0,1 sein. Das Ausmaß des Fehlers steigt mit der Größe des Quotienten. Zum Beispielfmod(9E14, 0.1);
ergibt sich ein Wert von ungefähr 0,05, was aus mathematischer Sicht einfach falsch ist.