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 :

problème de float


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    ingénieur
    Inscrit en
    Septembre 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 54
    Par défaut problème de float
    Bonjour,

    j'essaye d'écrire un programme qui me calcul les valeurs pour cette formule :

    (1/2)*g*t*t .

    Voici ce qui a été fait (sous linux, compilateur gcc)


    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
    16
    17
    #include <stdio.h>
    #define G 9.81
    #define N 16
     
    int main(void)
    {
        int t; /* Temps en seconde */
            float m; /* Longueur en m */
     
        printf("\t  t  \t  (1/2)gt^2\n");
        printf("\t==========================\n");
        for (t=0; t<=N; t++)  {
           printf("\t%3d \t %18d\n", t , m);
        m = 0.5*G*t*t;
       }
        return 0;
    }
    Et voici le résultat :


    t (1/2)gt^2
    ==========================
    0 -2147483648
    1 0
    2 1610612736
    3 1610612736
    4 1610612736
    5 1610612736
    6 0
    7 1610612736
    8 1073741824
    9 1610612736
    10 1073741824
    11 0
    12 1073741824
    13 1610612736
    14 1610612736
    15 1073741824
    16 0
    Alors pour le temps (t) cela s'affiche, par contre pour m la distance parcouru, je sais pas pourquoi cela m'affiche ces chiffre là.

    Par contre quand je change cette ligne :

    float m; /* Longueur en m */

    en celle-ci

    int m; /* Longueur en m */

    cela m'affiche ceci :

    t (1/2)gt^2
    ==========================
    0 9129972
    1 0
    2 4
    3 19
    4 44
    5 78
    6 122
    7 176
    8 240
    9 313
    10 397
    11 490
    12 593
    13 706
    14 828
    15 961
    16 1103
    pour la distance m je n'est pas les chiffres après la virgule, quelqu'un saurait d'où vient le problème ? (normalement les données sont sur 2 colonnes distincts mais l'affichage me le permet pas)

    merci d'avance.

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Pour afficher un float, c'est %f (par exemple) pas %d
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("\t%3d \t %18d\n", t , m);

  3. #3
    Membre confirmé
    Profil pro
    ingénieur
    Inscrit en
    Septembre 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 54
    Par défaut Merci !
    Merci Diogene !

    j'avais la réponse devant moi et à force de triturer le code dans tout les sens je l'ai pas vu, merci du coup de main:

    ==>printf("\t%3d \t %.4f\n", t , m);

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/03/2006, 19h29
  2. Problème conversion float vers double
    Par jhenaff dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 27/01/2006, 10h39
  3. Problème avec float.
    Par Paulinho dans le forum Débuter
    Réponses: 1
    Dernier message: 29/11/2005, 10h27
  4. [IB701] problème de float ??
    Par BoeufBrocoli dans le forum InterBase
    Réponses: 5
    Dernier message: 15/09/2003, 14h15
  5. problème de float sur SQL server 2000.
    Par fidji dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 24/07/2003, 14h15

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