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

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top