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 :

types de données pour des calculs mathématiques


Sujet :

C

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2006
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 35
    Points : 32
    Points
    32
    Par défaut types de données pour des calculs mathématiques
    Bonjour !
    mon code qui m pose problème est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    Float X;
    Float Y;
    Y=120.5*X*X-1337.0*X+3748.4;
    fprintf(LOG," Y1=%f \n",Y);
    fprintf(LOG," Y2=%f \n",120.5*X*X-1337.0*X+3748.4);
    j ai deux résultats differents pour un même X
    exemple X=5.4
    => Y1=106.109173
    Y2=42.073647
    Quel type de données devrais je choisir pour avoir un résultat similaire à ce qui est calculé dans le "fprintf",sachant que c est le bon résultat?
    MERCI

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    d'abord c'est float avec un f minuscule et non pas Float avec un F majuscule ...

    Le C est sensible à la casse (majuscule/mnuscule)

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2006
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 35
    Points : 32
    Points
    32
    Par défaut
    jai réecris mes lignes de code sur le forum , j l es ai po copier coller!
    merci pour l'aide que tu m apporte!

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par hamska2 Voir le message
    jai réecris mes lignes de code sur le forum , j l es ai po copier coller!
    merci pour l'aide que tu m apporte!
    1. Primo,

    2. Secondo, bonjour la politesse !!

    3. Tertio, on n'est pas sensés le savoir, tu postes ça..

  5. #5
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,

    Le code posté ne compile pas.
    Si on le remet d'équerre, on a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #include <stdio.h>
     
    int main(void)
    {
        float X = 5.4;
        float Y;
     
        Y=120.5*X*X-1337.0*X+3748.4;
     
        fprintf(stdout," Y1=%f \n",Y);
        fprintf(stdout," Y2=%f \n",120.5*X*X-1337.0*X+3748.4);
     
        return 0;
    }
    Quand on l'exécute, on obtient deux fois la même chose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >./a.exe
     Y1=42.379997
     Y2=42.379997
    Dans la mesure où le père noël nous a encore refusé une boule de cristal cette année, merci de poster un code qui compile et qui reproduit le bug.

  6. #6
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 950
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 950
    Points : 5 667
    Points
    5 667
    Par défaut
    Hai,
    Citation Envoyé par hamska2 Voir le message
    jai réecris mes lignes de code sur le forum , j l es ai po copier coller!
    merci pour l'aide que tu m apporte!
    Un effort sur le français serait agréable pour les lecteurs.

    Pourquoi ne pas faire un copier/coller ?

    Tu trouves plus simple de retaper ton code ?

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par hamska2 Voir le message
    Bonjour !
    mon code qui m pose problème est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    Float X;
    Float Y;
    Y=120.5*X*X-1337.0*X+3748.4;
    fprintf(LOG," Y1=%f \n",Y);
    fprintf(LOG," Y2=%f \n",120.5*X*X-1337.0*X+3748.4);
    j ai deux résultats differents pour un même X
    exemple X=5.4
    => Y1=106.109173
    Y2=42.073647
    Quel type de données devrais je choisir pour avoir un résultat similaire à ce qui est calculé dans le "fprintf",sachant que c est le bon résultat?
    MERCI
    Ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #include <stdio.h>
    #define LOG stdout
    int main (void)
    {
       float X = 5.4;
       float Y;
       Y = 120.5 * X * X - 1337.0 * X + 3748.4;
       fprintf (LOG, " Y1=%f \n", Y);
       fprintf (LOG, " Y2=%f \n", 120.5 * X * X - 1337.0 * X + 3748.4);
     
       return 0;
    }
    donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     Y1=42.379997
     Y2=42.379997
     
    Process returned 0 (0x0)   execution time : 0.036 s
    Press any key to continue.
    la différence n'est pas flagrante. maisavec X = 10;, on obtient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     Y1=2428.399902
     Y2=2428.400000
     
    Process returned 0 (0x0)   execution time : 0.055 s
    Press any key to continue.
    probablement du aux pertes dans les conversions double/float. Je recommande le type double :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     Y1=2428.400000
     Y2=2428.400000
     
    Process returned 0 (0x0)   execution time : 0.036 s
    Press any key to continue.

Discussions similaires

  1. Entrepôt de données pour des enseignants
    Par la joziane dans le forum Schéma
    Réponses: 14
    Dernier message: 03/01/2007, 16h55
  2. Meilleur type de données pour un prix
    Par linar009 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 17/08/2006, 14h41
  3. [HashMap] Ecrasement de données pour des clés différentes
    Par Adjanakis dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 20/07/2006, 11h20
  4. Type de données pour effectuer une différence en vba
    Par snoopy69 dans le forum Access
    Réponses: 4
    Dernier message: 03/03/2006, 07h49
  5. Réponses: 2
    Dernier message: 22/09/2003, 11h23

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