Partage
  • Partager sur Facebook
  • Partager sur Twitter

Arrondir en fonction de la virgule

15.04 devient 15 et 15.06 devient 16

Sujet résolu
    17 décembre 2005 à 18:19:46

    Bonsoir à toutes et à tous !

    Comment fait-on pour arrondir un nombre en fonction des chiffres après sa virgules ? Par exemple :

    18.02 devient 18
    14.08 devient 15
    ect...

    Sachant que si les chiffres après la virgule vont de 01 à 04 inclus on arrondi à la moyenne inférieure, alors que si ca va de 05 à 09 inclus, on arrondi à la moyenne supérieure...

    PS : J'ai essayé un script mais il arrondi toujours à la moyenne supérieure :

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>

    int main ()
    {
        double moyenne_decimale = 0;
            int moyenne_arrondie = 0;
           
            printf("Entrez votre moyenne : ");
            scanf("%lf", &moyenne_decimale);
           
            if (moyenne_decimale <= 4)
                    moyenne_arrondie = ceil(moyenne_decimale);
           
            else
                    moyenne_arrondie = floor(moyenne_decimale);
           
            switch (moyenne_arrondie)
            {
                    case 0:
                            printf("Oula ! Redoublement en perspective !");
                            break;
                    case 5:
                            printf("Mouais tu peux faire beaucoup beaucoup mieux !");
                            break;
                    case 10:
                            printf("Pas terrible, mais ça passe juste !");
                            break;
                    case 15:
                            printf("Wow comment t'a fait ? T'a triche je suis sur !");
                            break;
                    case 20:
                            printf("Respect Respect !");
                            break;
                    default:
                            printf("Desole, aucun commentaire pour cette note !");
            }
           
            if (moyenne_arrondie > 20 || moyenne_decimale > 20)
                    printf("T'a plus de 20 et tu veux que je te crois ?");
           
            return 0;       
    }


    Désolé pour les librairies je sais jamais lesquelles sont bonnes ;)

    • Partager sur Facebook
    • Partager sur Twitter
      17 décembre 2005 à 18:27:05

      Merci mais en fait ce n'est pas cette réponse là que j'attendais en particulier (je disais cela car je ne sais jamais s'il faut utiliser math.h ou stdlib.h donc je mets les deux) ;)
      • Partager sur Facebook
      • Partager sur Twitter
        18 décembre 2005 à 10:03:57

        UP ~ Pardon dans mon code j'ai remarqué que la ligne :
        if (moyenne_decimale <= 4)
          moyenne_arrondie = ceil(moyenne_decimale);
               
        else
          moyenne_arrondie = floor(moyenne_decimale);


        Était complètement nulle car c'est pas du tout ce qu'il faut que je fasse donc si quelqu'un peut me dire comment vérifier les chiffres après la virgule d'un nombre ça serait sympa merci d'avance ;)
        • Partager sur Facebook
        • Partager sur Twitter
          18 décembre 2005 à 10:22:11

          Ploum ploum ploum =)

          Bon bah si j'ai bien compris ton problème tu veux teste x chiffres après la virgule et arrondir au dessus ou au dessous si c'est au dessus / dessous de 0.05 par exemple, bah ca donnerais un truc du genre :

          float a(18.06);

          if((a-(int)a) > 0.05) // Ici on teste la partie flottante de a
            printf("%f\n", ceil(a));
          else
            printf("%f\n", floor(a));


          Voilu voilou ^^
          • Partager sur Facebook
          • Partager sur Twitter
            18 décembre 2005 à 10:29:35

            Oui mais je peux pas faire cela en utilisant que les cours fournis par M@téo ? Parce que là, c'est pas que je comprends rien mais presque :p
            • Partager sur Facebook
            • Partager sur Twitter
              18 décembre 2005 à 10:35:36

              Bah c'est pas bien compliqué, quand tu fais :

              (a - (int)a)


              le ' (int) ' signifie que tu cast en entier ( en gros tu supprimes la partie flottante donc tu obtiens 18), ensuite comme on fais 18.06 - 18, on obtient 0.06 et il ne reste plus qu'a tester si c'est supérieur à 0.05 etc etc ...
              • Partager sur Facebook
              • Partager sur Twitter
                18 décembre 2005 à 10:44:01

                Ah ouais merci je vais essayé ! ;)
                • Partager sur Facebook
                • Partager sur Twitter

                Arrondir en fonction de la virgule

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown