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 :

Division et float


Sujet :

C

  1. #1
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 52
    Points : 40
    Points
    40
    Par défaut Division et float
    Bonjour,
    J'ai un petit soucis tout bête.
    Je fais la division suivante :

    f = uC1 / uC2;

    avec f déclaré en float, et uC1, uC2 déclaré en unsigned int.

    Rien de bien méchant, sauf que je ne comprend pas pourquoi j'obtient toujours un nombre entier pour f...

    exemple : uC1=320, uC2=121 => f=2 ??? au lieu de 2.6.

    Je suppose qu'il s'agit d'un probléme de cast, mais je ne connais pas la solution ...

    Merci pour vos réponses.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    633
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 633
    Points : 711
    Points
    711
    Par défaut
    Bonjour,
    Citation Envoyé par Franck26
    Bonjour,
    J'ai un petit soucis tout bête.
    Je fais la division suivante :

    f = uC1 / uC2;

    avec f déclaré en float, et uC1, uC2 déclaré en unsigned int.

    Rien de bien méchant, sauf que je ne comprend pas pourquoi j'obtient toujours un nombre entier pour f...

    exemple : uC1=320, uC2=121 => f=2 ??? au lieu de 2.6.

    Je suppose qu'il s'agit d'un probléme de cast, mais je ne connais pas la solution ...

    Merci pour vos réponses.
    C'est explicite dans tout doc C : la division a/b est une division entière si a et b sont des entiers (signés ou pas).

    Il faut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int a,b;
    ...
    float f = (float)a/b;
    un seul cast des valeurs apparaissant dans la division suffit, l'autre devient implicite.

    ps: ouvrir le moindre bouquin/cours de C t'aurait suffit pour avoir ta réponse.
    C'est en cherchant qu'on apprend.

  3. #3
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 52
    Points : 40
    Points
    40
    Par défaut
    Merci pour la réponse,
    c'était effectivement mon probléme.
    J'ai bien conscience que la solution se trouve facilement sur tout bouquin C, le seul probléme est d'en avoir un sur soit...
    Et au bout de 15 minutes de recheches infructueuses sur google (surement pas avec les bons thermes) j'ai utilisé le forum...

    Donc désolé si je t'ai fais perdre du temps, et merci pour ta réponse rapide.

    A+.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    633
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 633
    Points : 711
    Points
    711
    Par défaut
    Bonjour,
    Citation Envoyé par Franck26
    Merci pour la réponse,
    c'était effectivement mon probléme.
    J'ai bien conscience que la solution se trouve facilement sur tout bouquin C, le seul probléme est d'en avoir un sur soit...
    Et au bout de 15 minutes de recheches infructueuses sur google (surement pas avec les bons thermes) j'ai utilisé le forum...

    Donc désolé si je t'ai fais perdre du temps, et merci pour ta réponse rapide.

    A+.
    Ce n'est pas seulement un problème de recherche, il faut également prendre des initiatives : ton message initial parlait de cast.
    Moi, devant un tel problème, j'aurais essayé d'en faire, et, voyant que le cast naïf
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    float f = (float)(a/b);
    ne marchait pas, j'aurais essayé de caster chaque valeur séparément, et j'aurais donc trouvé la solution, même sans avoir de doc sous la main.

  5. #5
    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 Franck26
    Merci pour la réponse,
    c'était effectivement mon probléme.
    J'ai bien conscience que la solution se trouve facilement sur tout bouquin C, le seul probléme est d'en avoir un sur soit...
    Et au bout de 15 minutes de recheches infructueuses sur google (surement pas avec les bons thermes) j'ai utilisé le forum...

    Donc désolé si je t'ai fais perdre du temps, et merci pour ta réponse rapide.

    A+.
    Salut,

    Rien que sur les cours en ligne disponible sur developpez http://c.developpez.com/cours/#cours-c tu dois certainement trouver la réponse à ton problème. Cette entrée dans la aurait également dû te mettre sur la voie: http://c.developpez.com/faq/c/?page=...UR_div_integer

    Ce tutoriel devrait t'aider pour la suite: http://club.developpez.com/aidenouveaux/

    Thierry

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

Discussions similaires

  1. Float et division en c++!
    Par bill86 dans le forum C++
    Réponses: 11
    Dernier message: 05/10/2010, 23h43
  2. Formatter une division de float en string
    Par stephane.julien dans le forum C#
    Réponses: 3
    Dernier message: 25/10/2007, 16h15
  3. Réponses: 4
    Dernier message: 29/08/2006, 15h07
  4. Pb de formatage de champs de type float
    Par FrankyNormand dans le forum XMLRAD
    Réponses: 9
    Dernier message: 05/05/2005, 12h37
  5. probleme d'insertion d'un Float
    Par neness dans le forum Débuter
    Réponses: 3
    Dernier message: 07/01/2003, 12h32

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