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 :

simple question erreur de resultat


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 2
    Par défaut simple question erreur de resultat
    la fonction (fmod(pow(78,173 ),8979));



    me donne un résultat incorrect

    jai déclare variable comme double .


    merci

  2. #2
    Membre éclairé
    Homme Profil pro
    Cocher moderne
    Inscrit en
    Septembre 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Oman

    Informations professionnelles :
    Activité : Cocher moderne

    Informations forums :
    Inscription : Septembre 2006
    Messages : 50
    Par défaut
    Bonjour à toi aussi,

    Ouah! 78 puissance 173? C'est pour calculer quoi? Le nombre d'atomes dans l'univers?

    Et d'ailleurs, comment tu sais que le résultat est incorrect?

    De rine,

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 2
    Par défaut
    on peut vérifier python pow(x y z) ou pari jp ex...........


    pourquoi (certains français) se moquer des autres votre sport favori.

    la même question dans forum angalie j'aurai une réponse technique.

  4. #4
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Disons-le autrement. Comment sais-tu que la version python est plus proche de ce qui est attendu et non le contraire ?
    et quid si tu travailles avec des long-doubles ? Ou alors avec des bibliothèques comme GMP ?

    Avec un tel ordre de grandeur, ne pas oublier que la mantisse d'un double a une taille plus que limitée. A voir la réaction de pow(x y) sur python, j'ai une réponse dans les 4*80+10 digits. => GMP est ton ami.

    (A moins de tomber sur un spécialiste qui connait exactement ton problème et qui sait où tu veux en venir, il y a des fortes chances que les autres réponses soient en réaction à une perception de "il cherche à faire un truc qui ne semble avoir aucun sens car avec de tels ordres de grandeurs le taux d'erreur doit être faramineux et en plus il expose son problème de façon très incomplète comme si nous étions sensés le connaitre. Voire, il est évident que le résultat sera faux.". )

    EDIT: En plus, on ne verse plus dans le SFTW, moi je dis, il y a du progrès en matière d’accueil.
    Tout ça pour dire que tu trouveras la solution à problème : implémente pow toi même et fait des modulos au fur et à mesure.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  5. #5
    Membre Expert
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Par défaut
    Citation Envoyé par primo2015 Voir le message
    la même question dans forum angalie j'aurai une réponse technique.
    Le plus grand nombre positif fini (double) est ≈ 1,7976931348623157×10308.

    78173 ≈ 2.14×10327 (cf calc windows) -> overflow -> infini.
    fmod(infini, 8979) = NaN (ou n'importe quoi d'autre, mais pas le bon résultat).

    Regarde du coté des long doubles, ou d'une lib spécialisée dans les calculs de grands nombres.

  6. #6
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 287
    Par défaut
    Qu'est ce qui te fait penser qu'on se moque de toi ? Et d'ailleurs tu as eu la réponse alors que tu n'as même pas dit bonjour.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  7. #7
    Membre Expert
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par défaut
    Attention avec cette valeur, elle n’a que la précision de sa mantisse, soit 52 bits. Autrement dit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    double d = std::numeric_limits<double>::max();
    double d2 = d - 1;
    assert(d2 != d); // FAIL

Discussions similaires

  1. Réponses: 5
    Dernier message: 13/10/2005, 12h46
  2. Simple Question ....
    Par soltani.slim dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 25/08/2005, 18h11
  3. [langage] simple question ...
    Par perlgirl dans le forum Langage
    Réponses: 13
    Dernier message: 16/07/2004, 13h22
  4. PageControl -> Une simple question
    Par Invité dans le forum C++Builder
    Réponses: 4
    Dernier message: 08/05/2004, 09h19

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