C - étage de nombre entier de doubles moduls
Question
Je dois faire le plancher d'équation suivante (e% 100000) où e est un double. Je sais que mod accepte uniquement les valeurs int, comment puis-je faire pour obtenir le même résultat?
Merci
La solution
Utilisez la fonction fmod()
au lieu de %
. Il accepte les paramètres de double
, et renvoie un résultat double
.
Autres conseils
Pourquoi ne pas prendre la parole en premier, puis mod, par exemple. floor(e) % 100000
?
Peut-être que je l'ai mal compris ce que vous essayez d'atteindre. Pourriez-vous donner un exemple de l'entrée et de sortie que vous attendez?
Vous pouvez utiliser la division pour faire l'équivalent de modulo:
double e = 1289401004400.589201;
const double divisor = 100000.0;
double remainder = e - floor(e / divisor) * divisor;
double result = floor(remainder);
printf("%f\n", result);
Cette impression
4400.000000
Bien sûr, cela est beaucoup plus lent que tout intégré modulo ...
Vous pourriez aussi utiliser fmod
, comme Anders K. a suggéré:)
Modifier
fixe std :: cout (C ++) une référence à l'utilisation printf (C). changement fixe à la sortie. Maintenant, il est purement C.