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 :

Float et division en c++!


Sujet :

C++

  1. #1
    Membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mars 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2010
    Messages : 51
    Points : 40
    Points
    40
    Par défaut Float et division en c++!
    Bonsoir,

    Une question bidon qui m'a couté deux heures de recherche en vain!
    J'espère trouver une réponse ici, parceque là i'm overloaded!!!
    J'aimerais faire la division de deux entiers mais le programme m'affiche toujours zéro :
    voilà un exemple de code parmi 100 que j'avais essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include <iomanip>
    using namespace std;
    maint()
    {
    int x=300;
    int y=400;
    ...
    cout << fixed << setprecision (5)<<float(x/y) ;
    }
    Le résultat est toujours zéro.

    Merci d'avance.

  2. #2
    Membre chevronné
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Points : 1 921
    Points
    1 921
    Par défaut
    int/int == int

    fait float(x)/y

  3. #3
    Membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mars 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2010
    Messages : 51
    Points : 40
    Points
    40
    Par défaut
    Je n'ai jamais pensé à cette réponse
    ça a marché, merci beaucoup Joel F.
    Mais comment ça se fait qu'un entier divisé par entier donne un entier?
    ça ne marche qu'en c++

  4. #4
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par bill86 Voir le message
    Mais comment ça se fait qu'un entier divisé par entier donne un entier?
    ça ne marche qu'en c++
    Longue tradition commencée en FORTRAN.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  5. #5
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut,
    Citation Envoyé par bill86 Voir le message
    Je n'ai jamais pensé à cette réponse
    ça a marché, merci beaucoup Joel F.
    Mais comment ça se fait qu'un entier divisé par entier donne un entier?
    ça ne marche qu'en c++
    En fait, c'est un problème propre à tous les langages typés (comprend: attentifs au type des données manipulés).

    Il n'est, en effet, pas possible de définir de règle précise de conversion:

    D'un coté, la division de deux entiers peut parfaitement donner un entier: il suffit de se remémorer les tables de multiplication apprises en primaire

    De l'autre, tu serais confronté au problème du choix du type réel à utiliser: certaines divisions se contenteront parfaitement d'un réel "simple précision", alors que d'autres nécessiteraient un réel "double précision".

    Je présumes donc (car je n'étais pas présent quand la décision a été prise pour frotran ) que les décideurs ont choisi la règle la plus simple à exprimer et à implémenter: le résultat d'une division se fait dans le type qui présente la plus petite précision, tout opérande confondu
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  6. #6
    Membre chevronné
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Points : 1 921
    Points
    1 921
    Par défaut
    La plus grande précision tu veux dire ?

  7. #7
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Citation Envoyé par Joel F Voir le message
    La plus grande précision tu veux dire ?
    On va dire
    La précision permettant de représenter le moins de nombre après la virgule
    de manière à éviter toute ambigüité
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  8. #8
    Membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mars 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2010
    Messages : 51
    Points : 40
    Points
    40
    Par défaut
    ReBonjour,

    Et que faire si une division d'un entier par un entier donne un résultat comme ça :

    -1.24e-007

    sachant que j'ai fait comme vous me l'avez dit : float z= float(x)/y et x,y sont des entiers...


    Merci.

  9. #9
    Membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mars 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2010
    Messages : 51
    Points : 40
    Points
    40
    Par défaut
    Et parfois des -0

  10. #10
    Membre chevronné
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Points : 1 921
    Points
    1 921
    Par défaut
    Non koala, int/float et float/int renvoit un flaot, donc de plus grande précision que int ...

  11. #11
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par Joel F Voir le message
    Non koala, int/float et float/int renvoit un flaot, donc de plus grande précision que int ...
    Un double. Meme pas quelque chose present dans l'expression...

    (En passant, certains langages -- Pascal p.e. -- ont deux operateurs DIV et /, DIV renvoyant le resultat entier, / un flottant)
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  12. #12
    En attente de confirmation mail

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 391
    Points : 3 311
    Points
    3 311
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet Voir le message
    (En passant, certains langages -- Pascal p.e. -- ont deux operateurs DIV et /, DIV renvoyant le resultat entier, / un flottant)
    CAML (et surment OCaml), utilise aussi des opérateurs différent selon que les opérandes sont entiers ou réels (+. ou + par exemple, pareil pour /, *, ...).

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

Discussions similaires

  1. Formatter une division de float en string
    Par stephane.julien dans le forum C#
    Réponses: 3
    Dernier message: 25/10/2007, 16h15
  2. Division et float
    Par Franck26 dans le forum C
    Réponses: 4
    Dernier message: 10/01/2007, 00h18
  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