IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Comment arrondir un nombre?


Sujet :

C

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 13
    Points : 9
    Points
    9
    Par défaut Comment arrondir un nombre?
    Bonjour à tous,

    Je suis à la recherche d'une fonction en C permettant, à partir d'un nombre flottant, de l'arrondir au plus proche afin qu'il devienne un entier.

    Je ne sais pas s'il existe une fonction permettant de faire cela, je n'arrive pas à la trouver.

    Merci pour votre aide

  2. #2
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par Dub's
    Bonjour à tous,

    Je suis à la recherche d'une fonction en C permettant, à partir d'un nombre flottant, de l'arrondir au plus proche afin qu'il devienne un entier.

    Je ne sais pas s'il existe une fonction permettant de faire cela, je n'arrive pas à la trouver.

    Merci pour votre aide
    Voici deux possibilités:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
     
    int main(void)
    {
        double nombre = 3.1415;
        int nombre_arrondi = floor(nombre + 0.5);
        printf("Le nombre arrondi est %d\n", nombre_arrondi);
     
        return EXIT_SUCCESS;
    }
    ou simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(void)
    {
        double nombre = 3.1415;
        int nombre_arrondi = (int) (nombre + 0.5);
        printf("Le nombre arrondi est %d\n", nombre_arrondi);
     
        return EXIT_SUCCESS;
    }
    Sous forme de macro, on peut écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #define ARRONDI(x) ((int)((x) + 0.5))
    Thierry

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Merci beaucoup, je ne pensais pas que ce serais aussi simple.

    Il faut reconnaître que c'est assez élégant!

    Encore merci pour l'info

  4. #4
    Membre confirmé Avatar de Lunixinclar
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 416
    Points : 489
    Points
    489
    Par défaut
    Dans math.h
    floor() arrondit au nombre inférieur,
    ceil() arrondit au nombre supérieur.

  5. #5
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    La solution proposée avec un simple transtypage en int ne convient pas pour les nombres négatifs, le transtypage provoquant une troncature du nombre vers 0 ( donc vers un entier inférieur pour les valeurs positives et un entier supérieur pour les valeurs positives). floor() permet une troncature vers -infini pour les nombres positifs et négatifs et marchera correctement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/12/2012, 15h31
  2. Comment arrondir un nombre ?
    Par arm3366 dans le forum Langage
    Réponses: 11
    Dernier message: 19/07/2011, 16h53
  3. Réponses: 9
    Dernier message: 30/10/2010, 15h00
  4. Comment arrondir un nombre
    Par arthy dans le forum Fortran
    Réponses: 1
    Dernier message: 14/03/2008, 11h56
  5. [Source] Comment arrondir un nombre avec une précision variable
    Par OhMonBato dans le forum Vos contributions VB6
    Réponses: 2
    Dernier message: 31/03/2007, 12h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo