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 :

Variable de type double


Sujet :

C

  1. #1
    Membre émérite
    Avatar de Linaa
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    987
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 987
    Par défaut Variable de type double
    Bonsoir à tous,

    J'ai une variable de type double et je voudrais savoir s'il y avait une fonction (?) pour renvoyer ma variable avec un seul chiffre après la virgule.
    Par défaut, il y en a 6.

    Je ne parle pas de l'affichage qui serait %.1f, mais du stockage de la variable en elle-meme.
    Le but, étant de faire des calculs, avec un seul chiffre après la virgule.

    Merci.

  2. #2
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Ben pourquoi ne pas faire des calculs plus precis.
    Et non je ne coirs pas que l'on puisse faire ce que tu souhaite.
    Si tu nous disait pourquoi on pourrait p-e t'aider autrement.

  3. #3
    Membre émérite
    Avatar de Linaa
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    987
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 987
    Par défaut
    Bah en fait, je trouve un résultat plus élévé, que le résultat attendu.
    Si c'est pas possible, c'est que le prof a dû arrondir... et que mon calcul est faux !

    Merci.

  4. #4
    Membre confirmé Avatar de Marco85
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 210
    Par défaut
    Attention aux calculs sur les types double : c'est extrêmement différent des calculs sur les réels dans le monde réel. Est-ce que tu ne pourrais pas faire ces calculs sur des int en utilisant un coefficient 10 par exemple et les afficher sous forme de chaine avec une virgule avant le dernier chiffre ? Sauf si bien sûr tu effectues des calculs de très haute précision (mais dans ce cas, pourquoi rechercher une perte de précision ?).

    Marco85

  5. #5
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut Re: Variable de type double
    Citation Envoyé par Linaa
    J'ai une variable de type double et je voudrais savoir s'il y avait une fonction (?) pour renvoyer ma variable avec un seul chiffre après la virgule.
    Par défaut, il y en a 6.

    Je ne parle pas de l'affichage qui serait %.1f, mais du stockage de la variable en elle-meme.
    Le but, étant de faire des calculs, avec un seul chiffre après la virgule.
    A ton avis, que signifie 'virgule flottante' ? Quand tu auras compris ça, tu verras que ta question n'a pas de sens.

    Il n'y a pas de nombres à virgule fixe en C.

  6. #6
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Linaa
    Bah en fait, je trouve un résultat plus élévé, que le résultat attendu.
    Si c'est pas possible, c'est que le prof a dû arrondir... et que mon calcul est faux !
    Montre ton code. On ne guérit pas le malade en déréglant le thermomètre...

  7. #7
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Citation Envoyé par Linaa
    Bah en fait, je trouve un résultat plus élévé, que le résultat attendu.
    Si c'est pas possible, c'est que le prof a dû arrondir... et que mon calcul est faux !
    Montre ton code. On ne guérit pas le malade en déréglant le thermomètre...
    Très belle citation je connaissais pas.

  8. #8
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    J'ai une variable de type double et je voudrais savoir s'il y avait une fonction (?) pour renvoyer ma variable avec un seul chiffre après la virgule.
    A quoi ça te sert d'utiliser un double si ce n'est pour récupérer qu'un seul chiffre après la virgule (sauf si ton nombre est énorme), utilise un float, tu y gagnera en espace mémoire.


    Par défaut, il y en a 6.
    A bon et c'est où dans la norme ? Les réels sont encodées selon le format IEEE 754, et il n'y a pas que 6 chiffres après la virgule.

    Bah en fait, je trouve un résultat plus élévé, que le résultat attendu.
    Si c'est pas possible, c'est que le prof a dû arrondir... et que mon calcul est faux !
    Tu n'as pas l'impression que la dernière solution est peut être la bonne ?

    Etant donné que le thread est poétique, je me permetterai un proverbe chinois:

    Si tu te tape la tete contre une cruche et qu'elle sonne creux,n'en deduis pas que c'est la cruche qui est vide

  9. #9
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Bah en fait, je trouve un résultat plus élévé, que le résultat attendu.
    Si c'est pas possible, c'est que le prof a dû arrondir... et que mon calcul est faux !
    Au final, t'essaies juste de bidouiller pour avoir le même résultat... T'as qu'à faire ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    double donnemoileresultat()
    { 
      return resultatduprof;
    }
    Ma citation de Confucius:

    Savoir que l'on sait ce que l'on sait, et savoir que l'on ne sait pas ce que l'on ne sait pas : voilà la véritable intelligence.

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 186
    Par défaut
    Citation Envoyé par fearyourself
    Au final, t'essaies juste de bidouiller pour avoir le même résultat... T'as qu'à faire ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    double donnemoileresultat()
    { 
      return resultatduprof;
    }
    +1

    déja fait en programmation et régulièrment avec les graphes Excel pour rectifier les points hors normes.

  11. #11
    Membre émérite
    Avatar de Linaa
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    987
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 987
    Par défaut Re: Variable de type double
    Citation Envoyé par Emmanuel Delahaye
    A ton avis, que signifie 'virgule flottante' ? Quand tu auras compris ça, tu verras que ta question n'a pas de sens.

    Il n'y a pas de nombres à virgule fixe en C.
    Je n'ai pas parler de virgule flottante...
    Quand je parlais de virgule, c'était pour signifier un nombre réel...

    Citation Envoyé par PRomu@ld
    Par défaut, il y en a 6.
    A bon et c'est où dans la norme ? Les réels sont encodées selon le format IEEE 754, et il n'y a pas que 6 chiffres après la virgule.
    A l'affichage, il n'y en a que 6.

    Citation Envoyé par PRomu@ld
    Bah en fait, je trouve un résultat plus élévé, que le résultat attendu.
    Si c'est pas possible, c'est que le prof a dû arrondir... et que mon calcul est faux !
    Tu n'as pas l'impression que la dernière solution est peut être la bonne ?
    C'est bien ce que j'ai dit non ?!

    Citation Envoyé par fearyourself
    Au final, t'essaies juste de bidouiller pour avoir le même résultat...
    C'est vraiment inutile, vaut mieux chercher son erreur que bidouiller.

  12. #12
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    A l'affichage, il n'y en a que 6.
    Oui mais tu as l'air de mélanger un peu, tu nous dis que tu veux utiliser un nombre après la virgule parce que tu dis que par défaut il n'y en a que 6. Il faudrait savoir ce que tu veux : tu veux juste l'affichage ou tu veux réduire ton nombre à une décimale ?

    C'est bien ce que j'ai dit non ?!
    Désolé mais j'avais peur que tu mettes en doute les compétence de tes professeurs ...

    C'est vraiment inutile, vaut mieux chercher son erreur que bidouiller.
    C'est aussi une bonne idée. Mais pour qu'on t'aide, il faudrait que tu poste un petit peu de code, parce que je te le rappelle, tu est ici sur un forum C. Si c'est ton algo qui n'est pas bon (ce qui semble être le cas), ce n'est pas le bon forum. Quoi qu'il est soit, si tu ne précise pas un peiti peu ta deamnde, nous ne pouvons rien faire...

  13. #13
    Membre émérite
    Avatar de Linaa
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    987
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 987
    Par défaut
    Citation Envoyé par PRomu@ld
    Il faudrait savoir ce que tu veux : tu veux juste l'affichage ou tu veux réduire ton nombre à une décimale ?
    [...]
    C'est aussi une bonne idée. Mais pour qu'on t'aide, il faudrait que tu poste un petit peu de code, parce que je te le rappelle, tu est ici sur un forum C. Si c'est ton algo qui n'est pas bon (ce qui semble être le cas), ce n'est pas le bon forum. Quoi qu'il est soit, si tu ne précise pas un peiti peu ta deamnde, nous ne pouvons rien faire...
    Ce que je voulais, c'est réduire mon nombre à une seule décimale.
    Apparement, on ne peut pas...
    Je n'ai pas d'erreur de compilation. Oui, c'est bien un problème d'algo (que je vais revoir d'ailleurs).

    Merci.

  14. #14
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut Re: Variable de type double
    Citation Envoyé par Linaa
    Citation Envoyé par Emmanuel Delahaye
    A ton avis, que signifie 'virgule flottante' ? Quand tu auras compris ça, tu verras que ta question n'a pas de sens.

    Il n'y a pas de nombres à virgule fixe en C.
    Je n'ai pas parler de virgule flottante...
    En C, tu n'as pas le choix. Soit tu utilises les entiers :
    • char
    • short
    • int
    • long
    • long long [C99]

    soit tu utilises les flottants
    • float
    • double

  15. #15
    Membre émérite
    Avatar de Linaa
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    987
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 987
    Par défaut
    soit tu utilises les flottants
    • float
    • double
    Quand je parlais de chiffre à virgule, c'était pour un double (voir titre du post).

  16. #16
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Linaa
    soit tu utilises les flottants
    • float
    • double
    Quand je parlais de chiffre à virgule, c'était pour un double (voir titre du post).
    "Chiffre à virgule" n'a aucun sens. Tu veux sans doute dire "nombre à virgule".

    Les doubles en C n'ont pas de virgule fixe. Leur représentation interne est
    signe, mantisse, exposant (aka 'virgule flottante). La virgule, on ne la voit que lorsqu'on demande une représentation textuelle avec *printf() et "%f".

  17. #17
    Membre émérite
    Avatar de Linaa
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    987
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 987
    Par défaut
    En regardant mon premier post, je ne parlais pas de chiffre à virgule,
    Mais du nombre de chiffre après la virgule...

+ 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. problème d'overflow avec variable type double
    Par ben83 dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 15/02/2007, 09h55

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