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 avec division


Sujet :

C

  1. #1
    Invité
    Invité(e)
    Par défaut Problème avec division
    Bonjour,
    Voici un calcul :
    c = (a/b)*100;

    vous l'avez peut-être compris, c'est pour connaitre la valeur sur cent.
    a, b et c sont des valeur double. a est inferrieur à b.
    Quand je compile et que j'affiche, c est égale à zero. Pourrez vous m'expliquer pourquoi?
    merci.

  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour
    100 <=> int
    100. <=> double

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Points : 641
    Points
    641
    Par défaut
    Peut-être parce ce que a est egal à zero.

  4. #4
    Invité
    Invité(e)
    Par défaut
    pour lucien63 : a est en faite une valeur, en millisecondes, qui est le résultat d'une fonction qui retourne depuis combien de temps une musqiue est démarrée. b est enfaite une valeur qui est le résultat d'une fonction qui retourne le temps total de la musique. a ne peut jamais être à 0 il est toujours supérieur.

    pour mabu : pendant mes tests j'ai regardé combien faisait a/b et cela m'affiche zéro !

    pour information a et b ont les bonnes valeurs : celà na vient pas de là!

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Points : 641
    Points
    641
    Par défaut
    si a/b fait zero c'est que a est égal à zero.
    Y a pas d'autre solution !
    si b est egal à zero ça fait une division par zero.

  6. #6
    Invité
    Invité(e)
    Par défaut
    je viens de dire que a est toujours superrieur à zéro et que b forcément car le temps d'une musqiue est supérieur à zéro millisecondes.
    Je vous le redit : les valeur sont toutes bonnes (car testées).

  7. #7
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Points : 641
    Points
    641
    Par défaut
    pour information a et b ont les bonnes valeurs : celà na vient pas de là!
    Alors c'est que l'erreur ne vient pas de l'opération mais de l'affichage du résultat.

  8. #8
    Invité
    Invité(e)
    Par défaut
    et non car je pense que :
    fprintf(stderr,"%d",c);
    marche.
    De plus c est envoyé à une fonction qui bug si c est inferrieur ou égale à zéro (et là elle bug).

    Le résulat est toujours entre 0 et 1. Il y a peut-être un problème d'arrondi !

  9. #9
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Points : 641
    Points
    641
    Par défaut
    et avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fprintf(stderr,"%f",c);

  10. #10
    Invité
    Invité(e)
    Par défaut
    déjà pensé. j'ai même utiliser avec %i (tu te doute du résultat).

  11. #11
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Points : 641
    Points
    641
    Par défaut
    Citation Envoyé par brastir Voir le message
    déjà pensé
    Il ne faut pas que penser il faut essayer.

    j'ai même utiliser avec %i (tu te doute du résultat).
    Le même que pour %d

  12. #12
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Citation Envoyé par brastir Voir le message
    et non car je pense que :
    fprintf(stderr,"%d",c);
    marche.
    Si c est bien un double, non ca ne fonctionne pas. %d sert a afficher des int pas des doubles.

  13. #13
    Invité(e)
    Invité(e)
    Par défaut
    Citation Envoyé par brastir Voir le message
    et non car je pense que :
    fprintf(stderr,"%d",c);
    marche.
    Et si tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    fprintf(stderr,"a/b*100. = %f\n",a/b*100.);
    fprintf(stderr,"c = %f\n",c);
    Qu'obtiens tu ?

  14. #14
    Invité
    Invité(e)
    Par défaut
    Je viens de tester avec 100. au lieu de 100 et avec l'affichage de mabu sa marche! merci tous le monde

  15. #15
    Expert éminent sénior
    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
    Points : 13 926
    Points
    13 926
    Par défaut
    Il y a quelque chose qui n'est pas clair dans ton histoire :

    si a et b sont effectivement des doubles, tu dois avoir le même résultat avec ou sans point :
    a/b*100 == a/b*100.0
    Dans les deux cas, le format d'impression est %f

    Par contre, si a et b sont deux entiers (et j'ai tendance à le croire), comme a<b, dans les deux cas le résultat sera 0. Dans le premier un entier 0 dans le second un double 0.0. Le format est alors dans le premier cas %d et dans le second %f.

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

Discussions similaires

  1. Problème de division avec Xcode 4.1
    Par erogan dans le forum Débuter
    Réponses: 4
    Dernier message: 09/11/2011, 00h06
  2. Réponses: 18
    Dernier message: 20/10/2011, 12h41
  3. Problème avec le reste d'une division
    Par darchisgod dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/07/2011, 16h46
  4. Division relationnelle : problème avec les doublons
    Par ced dans le forum Langage SQL
    Réponses: 4
    Dernier message: 11/12/2007, 16h49
  5. Problème avec une division
    Par ghan77 dans le forum Débuter
    Réponses: 3
    Dernier message: 08/12/2005, 10h50

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