La division en langage C

Résolu/Fermé
sophie85 - 8 nov. 2009 à 17:14
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 - 8 nov. 2009 à 20:34
Bonjour,
pouvez-vous me dire quelle est la commande à utiliser pour arrondir à un centième près le résultat d'une division en langage C.

exemple:
je souhaite avoir pour: 100/3
un résultat de 33.3 et non de 33.3333333333333333

merci :)

3 réponses

Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 660
8 nov. 2009 à 18:47
si c'est pour l'affichage, voir les format de printf !

sinon voici une manière :

tu veux faire a/b

alors tu fais la division, tu la multiplie par 10, tu convertis ça en un entier (le résultat sera tronqué) et tu le remets dans un float, puis tu divises par 10.

pour arrondir et non tronquer, alors il faut ajouter 5 après avoir mutliplié par 10.
1
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
8 nov. 2009 à 18:57
On peut faire un truc tordu du genre:
char chaine[32];
double nombre = 100/3;
sprintf(chaine, "%.2lf", nombre);
double resultat = atof(chaine);

C'est tordu mais ça doit aboutir au résultat escompté.
Bonne continuation.
1
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
8 nov. 2009 à 19:17
Ou plus simple :
double nombre=100/3;
double resultat=(int)(a*10)/10.0;

Mais bon, libre à toi de passer par les chaînes de caractères ;-))).
0
sophie85 > fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022
8 nov. 2009 à 19:23
merci Fiddy pour ta réponse :)
0
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148 > fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022
8 nov. 2009 à 19:27
Ahhhgh, je savais bien que ma réponse était tordue !
Mais ta réponse est satisfaisante... à une coquille près ;-)
Bonne soirée.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835 > loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017
8 nov. 2009 à 20:21
Très juste : double nombre=100/3.0; ^^

Bien vu ;-))).
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 660 > fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022
8 nov. 2009 à 20:34
euh... c'est exactement ce que j'ai proposé...
0
merci pour vos réponses Loupius et Pacorabanix :)
maintenant le résultat est bien à un centième près
bonne soirée :)
0