J'ai un programme en C ++ (compilé avec g ++). J'essaie d'appliquer deux doubles comme opérandes à la fonction de module, mais j'obtiens l'erreur suivante:
erreur: opérandes non valides des types 'double' et 'double' en binaire 'opérateur%'
Voici le code:
int main() {
double x = 6.3;
double y = 2;
double z = x % y;
}
fmod
peuvent provoquer des comportements inattendus. Par exemple,fmod(1, 0.1);
devrait mathématiquement être nul, mais sera en fait presque 0,1. L'ampleur de l'erreur augmente avec la magnitude du quotient. Par exemple,fmod(9E14, 0.1);
évalue à environ 0,05, ce qui est tout simplement faux d'un point de vue mathématique.fmod(x,0.1)
divisera x par cette fraction précise et prendra le reste, plutôt que de diviser par la valeur numérique "un dixième".Réponses:
L'
%
opérateur est pour les entiers. Vous recherchez lafmod()
fonction .la source
angle
c'est, par exemple,359.9999999
alors les deuxangle
etfmod(angle, 360)
sont susceptibles d'être affichés sous la forme360
. (Ajoutez plus de 9 si nécessaire.) Essayez d'imprimer les valeurs avec, par exemple, 50 chiffres de précision.fmod(x, y)
est la fonction que vous utilisez.la source
Utiliser à
fmod()
partir de<cmath>
. Si vous ne souhaitez pas inclure le fichier d'en-tête C:la source
Vous pouvez implémenter votre propre fonction de module pour le faire pour vous:
Ensuite , vous pouvez simplement utiliser
dmod(6.3, 2)
pour obtenir le reste,0.3
.la source