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 :

nombre avec 8 chiffres apres la virgule


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de snipes
    Inscrit en
    Septembre 2004
    Messages
    547
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 547
    Par défaut nombre avec 8 chiffres apres la virgule
    bonjour tout le monde,

    je souhaiterai savoir quel type de donnée attribuer a un nombre ayant 8 chiffre apres la virgule
    j ai essayé le type "long double" mais lors de l affichage les 2 derniers chiffres sont arrondi !! (a l affichage j utilise %Lf ou %Ld ...dans les 2 cas c'est pas bon )

    auriez vous une idée sur le sujet ?

  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,
    En c, les types décimaux sont à virgule flottante on ne peut donc pas leur donner une précision absolue, seulement une précision relative : un flottant simple ou double précision sera plus précis quand il s'approche de zero, mais perd de la précision quand on s'en éloigne.

    voir ici.

    Pour avoir une précision exacte(1), il faut passer aux nombre à virgule fixe, et là, il n'y a rien de standard.

    (1) c'est à dire un nombre fixe de chiffres exacts après la virgule

  3. #3
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 474
    Par défaut
    Citation Envoyé par mabu Voir le message
    En c, les types décimaux sont à virgule flottante on ne peut donc pas leur donner une précision absolue, seulement une précision relative : un flottant simple ou double précision sera plus précis quand il s'approche de zero, mais perd de la précision quand on s'en éloigne.
    Et pas seulement : certains nombres ne peuvent être codés de manière absolue en binaire.

    Voir ici aussi.

    Ça vaudrait le coup de faire une entrée dans la F.A.Q. ...

  4. #4
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Hei,
    Citation Envoyé par Obsidian Voir le message
    Et pas seulement : certains nombres ne peuvent être codés de manière absolue en binaire.

    Voir ici aussi.

    Ça vaudrait le coup de faire une entrée dans la F.A.Q. ...
    Je dirais même plus : la plupart des nombres ne sont pas représentables exactement.

  5. #5
    Membre éclairé Avatar de snipes
    Inscrit en
    Septembre 2004
    Messages
    547
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 547
    Par défaut
    Je pense avoir trouvé mon bonheur - > GMP : http://gmplib.org/
    Merci pour les infos les amis

  6. #6
    Membre éclairé Avatar de snipes
    Inscrit en
    Septembre 2004
    Messages
    547
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 547
    Par défaut
    Autre alternative : float -> %.8f

  7. #7
    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 snipes Voir le message
    bonjour tout le monde,

    je souhaiterai savoir quel type de donnée attribuer a un nombre ayant 8 chiffre apres la virgule
    j ai essayé le type "long double" mais lors de l affichage les 2 derniers chiffres sont arrondi !! (a l affichage j utilise %Lf ou %Ld ...dans les 2 cas c'est pas bon )

    auriez vous une idée sur le sujet ?
    S'agissant d'un nombre réel, la représentation interne utilisée en informatique (signe + mantisse + exposant) est une approximation (sinon, il faudrait un nombre infini de bits). La précision varie selon le type et l'implémentation.

    Bien que ce ne soit pas exigé par la norme, généralement, double est plus précis que float.

    Ensuite, on peut demander à la fonction d'affichage d'être plus ou moins précise.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    #include <stdio.h>
     
    int main (void)
    {
       {
          float x = 1.0 / 3;
          printf ("x = %.8f\n", x);
       }
       {
          double x = 1.0 / 3;
          printf ("x = %.8f\n", x);
       }
       return 0;
    }
    Avec MinGW sur Vista SP1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    x = 0.33333334
    x = 0.33333333
     
    Process returned 0 (0x0)   execution time : 0.028 s
    Press any key to continue.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/04/2008, 16h00
  2. Représentation d'un nombre avec 'n' chiffres apres la virgule
    Par Contractofoued dans le forum MATLAB
    Réponses: 5
    Dernier message: 29/11/2007, 13h35
  3. calcule de PI avec nombre préci de chiffres aprés la virgule!
    Par do_key_120 dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 17/10/2007, 22h58
  4. Variable nombre : arrondir à 5 chiffres après la virgule
    Par micatmidog dans le forum Général Python
    Réponses: 7
    Dernier message: 21/12/2005, 10h03
  5. Pourcentage avec deux chiffres après la virgule
    Par Oluha dans le forum Langage SQL
    Réponses: 7
    Dernier message: 29/03/2005, 13h47

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