Probleme avec mon modulo
Fermé
Demonaz84
Messages postés
12
Date d'inscription
samedi 10 septembre 2016
Statut
Membre
Dernière intervention
5 décembre 2016
-
22 sept. 2016 à 04:25
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 - 22 sept. 2016 à 23:13
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 - 22 sept. 2016 à 23:13
A voir également:
- Probleme avec mon modulo
- Modulo 97 ✓ - Forum Excel
- Calcul modulo grand nombre ✓ - Forum Programmation
- Modulo casio graph 35+ ✓ - Forum calculatrices
- Modulo en c - Forum C
- Modulo ✓ - Forum C++
2 réponses
piopicolo
Messages postés
1395
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
31 juillet 2023
193
22 sept. 2016 à 06:35
22 sept. 2016 à 06:35
Bonjour,
Si en fait tu veux supprimer la deuxième décimale quel qu'en soit la valeur (0 à 9) (ce qui est plus sympa pour le client plutôt que d'arrondir au dessus si la valeur est supérieure ou égale à 5), tu multiplies ton chiffre par dix et tu supprimes la partie décimale puis tu divises par 10.
Mais ce n'est peut-être pas ce que tu veux faire.
A+
Si en fait tu veux supprimer la deuxième décimale quel qu'en soit la valeur (0 à 9) (ce qui est plus sympa pour le client plutôt que d'arrondir au dessus si la valeur est supérieure ou égale à 5), tu multiplies ton chiffre par dix et tu supprimes la partie décimale puis tu divises par 10.
Mais ce n'est peut-être pas ce que tu veux faire.
A+
Dalfab
Messages postés
706
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
2 novembre 2023
101
22 sept. 2016 à 22:31
22 sept. 2016 à 22:31
Bonjour,
Pour avoir un arrondi à 5 centimes. 20 fois le nombre doit être entier d'où :
Le + 0.5 permet un arrondi au plus proche, sinon ce serait un arrondi en dessous. Fonctionne pour tout nombre positif ou nul.
Attention, les nombres flottants ne sont pas des décimaux. Le nombre final est très proche de la valeur décimale mais doit être affiché avec set::precision(2).
Pour avoir un arrondi à 5 centimes. 20 fois le nombre doit être entier d'où :
double totalArrondi = std::floor(dTotal * 20. + .5) / 20.;.
Le + 0.5 permet un arrondi au plus proche, sinon ce serait un arrondi en dessous. Fonctionne pour tout nombre positif ou nul.
Attention, les nombres flottants ne sont pas des décimaux. Le nombre final est très proche de la valeur décimale mais doit être affiché avec set::precision(2).
Demonaz84
Messages postés
12
Date d'inscription
samedi 10 septembre 2016
Statut
Membre
Dernière intervention
5 décembre 2016
22 sept. 2016 à 22:46
22 sept. 2016 à 22:46
salut, merci beaucoup pour la reponse !
cependant je n'ai pas le droit de me servir de '' floor'' , parce que on ne l'a pas vu en classe.
""
Votre code ne doit utiliser que les instructions vues en classe :
Variables et constantes
Types de base (char, short, unsigned short, int, unsigned int, long, unsigned long, float, double, bool)
Entrées et sorties (std::cin et std::cout)
Opérations arithmétiques
Instructions conditionnelles
Opérations logiques
Boucles
Instruction system: system("pause"), system("cls")
Modificateurs de sorties: std::fixed, std::setprecision()
""
y aurait-il une façon de faire le même résultat sans la commande ''floor'' ?
cependant je n'ai pas le droit de me servir de '' floor'' , parce que on ne l'a pas vu en classe.
""
Votre code ne doit utiliser que les instructions vues en classe :
Variables et constantes
Types de base (char, short, unsigned short, int, unsigned int, long, unsigned long, float, double, bool)
Entrées et sorties (std::cin et std::cout)
Opérations arithmétiques
Instructions conditionnelles
Opérations logiques
Boucles
Instruction system: system("pause"), system("cls")
Modificateurs de sorties: std::fixed, std::setprecision()
""
y aurait-il une façon de faire le même résultat sans la commande ''floor'' ?
Dalfab
Messages postés
706
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
2 novembre 2023
101
>
Demonaz84
Messages postés
12
Date d'inscription
samedi 10 septembre 2016
Statut
Membre
Dernière intervention
5 décembre 2016
22 sept. 2016 à 23:13
22 sept. 2016 à 23:13
Si le cast a été vu en classe. Un code qui marche pour les montants de 0 à 107374182
Et je ne dis pas bravo à ton prof qui utilise std::system()
double totalArrondi = (int)(dTotal * 20. + .5) / 20.; // ou en 2 lignes int nbPieces = dTotal * 20. + .5; // produit un warning car il manque le cast double totalArrondi = nbPieces / 20.; // dans ton code, tu l'utilises quand tu fait : iArrondissement2 = iArrondissement1 % 10; // % ne fonctionne qu'avec 2 entiers et iArrondissement1 est donc implicitement 'casté' en int avec warning
Et je ne dis pas bravo à ton prof qui utilise std::system()