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 de variables de type 'double'


Sujet :

C++

  1. #1
    Membre à l'essai
    Homme Profil pro
    Responsable du parc et des réseaux de télécommunication
    Inscrit en
    Mars 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Responsable du parc et des réseaux de télécommunication
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2017
    Messages : 20
    Points : 20
    Points
    20
    Par défaut Division de variables de type 'double'
    Bonjour à tous,
    Même si je suis débutant j'ai déjà rencontré beaucoup de soucis sur l'utilisation dans l'utilisation des float et des double , je comprend parfaitement que le codage de type 'binaire' oblige la machine à avoir des valeurs à virgules approchants la valeurs escomptées et qu'elle n'est pas une représentation fidèle des valeurs que je suis en recherche d'obtenir.
    J'ai un soucis tout simple et qui pourtant monopolise beaucoup de ressources pour moi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	double result = (100001+100001+100001+100000)/4;
    	cout << result << endl;
    L'ennui du coup c'est que j'obtient comme résultat : 100000
    autant dire pas super , et surtout aucune virgule après la partie 'entière' du nombre !!!
    Existe t'il une manière de forcer une 'approximation' plus précises ?
    Actuellement je me tourne vers la librairie GMP, peux être existe t'il une libraire dédié au type d'usage que je recherche (division, addition, soustraction et multiplication de chiffre à virgule).
    Au cas ou :
    gcc version 7.5.0 sous Ubuntu 18.04.4 LTS
    J'appel g++ comme ceci
    g++ -o out prog.cpp - std=c++11 -Wall tout simplement
    Merci

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Bonjour,
    Citation Envoyé par neokal Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	double result = (100001+100001+100001+100000)/4;
    Ton problème vient de là:
    (100001+100001+100001+100000) est une valeur entière, ainsi que 4
    tu fais donc une division entière, et le résultat est donc un entier.

    Ça fait partie des bases du C.
    Si les cons volaient, il ferait nuit à midi.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Responsable du parc et des réseaux de télécommunication
    Inscrit en
    Mars 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Responsable du parc et des réseaux de télécommunication
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2017
    Messages : 20
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par droggo Voir le message
    Ça fait partie des bases du C.
    C'est pour ça que j'ai poser dans 'débuter'
    Une fois sur deux mon problèmes et franchement simple en +
    Je me suis aperçu qu'en foutant (double) devant 4 j'avais le résultat voulu.
    Puis en utilisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cout << setprecision(5) << fixed;
    en première entrée du main j'obtient des résultats globalement bien plus cohérent.
    Merci de ton coup de pouce

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

Discussions similaires

  1. variable de type double
    Par Magno dans le forum Débuter
    Réponses: 5
    Dernier message: 10/07/2012, 23h36
  2. Réponses: 3
    Dernier message: 18/08/2011, 20h28
  3. Réponses: 4
    Dernier message: 06/08/2010, 22h13
  4. Réponses: 15
    Dernier message: 10/05/2007, 13h36
  5. Variable de type double
    Par Linaa dans le forum C
    Réponses: 16
    Dernier message: 21/01/2006, 13h04

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