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 :

[Formats] Long? double? int ? . . .


Sujet :

C

  1. #1
    Membre éclairé Avatar de GyZmoO
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 428
    Par défaut [Formats] Long? double? int ? . . .
    Bonjour a tous, et d'avance je m'excuse.

    J'ai regardé pas mal de trucs sur le net, mais y'a des choses que je comprend pas. Je m'explique :


    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
    18
    19
    20
    21
    22
    23
    24
     
    double distanceKolmo(long tailleA, long tailleB, long tailleAB)
    {
        double resultat = 0.;
        long min = minKolmo(tailleA, tailleB);
     
     
        if (tailleA > tailleB)
        {
            resultat =  1.0 - (tailleA + tailleB - tailleAB)/min;
     
            printf("Min? = %ld \n", min);
     
            printf("TAILLE A = %ld \n", tailleA);
            fflush(stdout);
            printf("TAILLE B = %ld\n", tailleB);
            fflush(stdout);
            printf("TAILLE AB = %ld\n", tailleAB);
            fflush(stdout);
     
            printf("KOLMO DISTANCE = %9ld \n", resultat);
            fflush(stdout);
            return resultat;
        }
    Mon problème est le suivant, mon print KOLMO DISTANCE m'imprime 0 a chaque fois, alors 2 possibilités :

    - est ce que ma variable resultat contient vraiment 0 ?
    - ou bien c'est un mauvais format dans printf qui fait que ça m'affiche 0 ?

    Je suis perdu avec tout ça . . .

    2nde question si je compare 2 doubles compris entre 0 et 1, est ce correct comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (tabNotSpam[cptNotSpam] > tabSpam[cptSpam])
    Ou y'a t-il d'autres précautions a prendre??????? parce que j'ai l'impression que la condition est toujours vraie...

    Voila j'espère avoir été assez clair , merci et pardon si c'est des questions m....... que je pose...

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Salut !


    Pour ton printf, le format serait plutôt %f, même si c'est un type double, ca reste un nombre à virgule flottante donc:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("KOLMO DISTANCE = %9f \n", resultat);
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Membre éclairé Avatar de GyZmoO
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 428
    Par défaut
    Ok merci ! Je vais essayer ça de suite

    [Edit] Ok, ben maintenant j'ai un autre problème, ça m'affiche tout le temps 1.00000000 mais quand je fais le calcul a la main je trouve bien les résultats que j'attend, a savoir des trucs du style 0,97843 etc... [/Edit]

  4. #4
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par GyZmoO
    2nde question si je compare 2 doubles compris entre 0 et 1, est ce correct comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (tabNotSpam[cptNotSpam] > tabSpam[cptSpam])
    Ou y'a t-il d'autres précautions a prendre??????? parce que j'ai l'impression que la condition est toujours vraie...
    Bin non, une simple comparaison de ce genre suffit !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  5. #5
    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
    ça m'affiche tout le temps 1.00000000 mais quand je fais le calcul a la main je trouve bien les résultats que j'attend, a savoir des trucs du style 0,97843 etc...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resultat =  1.0 - (tailleA + tailleB - tailleAB)/min;
    Parce que la division dans l'expression en rouge est une division entière dont le quotient vaut 0.

  6. #6
    Membre éclairé Avatar de GyZmoO
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 428
    Par défaut
    Yep je viens de comprendre ça, je vais modifier les paramètres de ma fonction de sorte a avoir des double a la place des long ! Merci

  7. #7
    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
    je vais modifier les paramètres de ma fonction de sorte a avoir des double a la place des long
    Le choix du type dépend de la nature de ce qui est représenté , pas des aléas conjoncturels liés à un calcul. Il suffit ici de l'obliger à calculer en float ou en double :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resultat =  1.0 - (double)(tailleA + tailleB - tailleAB)/min;

  8. #8
    Membre éclairé Avatar de GyZmoO
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 428
    Par défaut
    C'est vrai, je n'y avais pas pensé ! Merci pour cette remarque, ça va m'éviter de changer tout le code et les headers

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

Discussions similaires

  1. Convertir un unsigned int vers un long double
    Par dafpp dans le forum Débuter
    Réponses: 3
    Dernier message: 28/01/2012, 19h37
  2. [Transtypage] Long en int
    Par Bugmaster dans le forum Langage
    Réponses: 2
    Dernier message: 20/09/2004, 09h05
  3. Réponses: 4
    Dernier message: 12/09/2003, 11h38
  4. abs pour un long double
    Par barthelv dans le forum C
    Réponses: 2
    Dernier message: 23/07/2003, 16h16
  5. String -> long double (_strlold ?)
    Par haypo dans le forum C
    Réponses: 7
    Dernier message: 25/07/2002, 20h22

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