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

Langage C++ Discussion :

Problème fonction pow()


Sujet :

Langage C++

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2014
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Problème fonction pow()
    Bonjour,

    J'étais sous perl et pour des raisons d'optimisations je viens de transcrire mon script en C++ (je précise que je suis nul dans ce langage).
    J'ai besoin de faire des puissances de n, j'utilise donc math.h et pow().
    Mon problème est le suivant : parfois la fonction retire 1 sans raison

    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
     
    #include <iostream>
    #include <math.h>
    using namespace std;
    int main(){
     
    int n=4;
    unsigned long int d=0;
    unsigned long int e=0;
    unsigned long int f=0;
     
    d = pow(23,n);      //donne 279841 - 1
    e = pow(23,4);      //donne 279841
    f = 23*23*23*23;  //donne 279841
     
    }
    Ça marche nickel avec 12, pas avec 11 et 23 : peut-être est-ce la magie des nombres premiers
    Y a t-il une raison ? (c'est pas dérangeant mais ce "bug" de la fonction pow est étrange)

    PS : le même code en perl marche à merveille vive C++

    Merci de votre réponse éventuelle et encore désolé de poster un problème qui peut vous paraître aussi basique ...

  2. #2
    Membre éprouvé Avatar de fenkys
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

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

    Informations forums :
    Inscription : Octobre 2007
    Messages : 376
    Points : 1 054
    Points
    1 054
    Par défaut
    Bonjour,


    Les variables e et f sont des constantes (ou plutôt, le calcul n'utilise que des constantes) et sont calculées à la compilation.
    La variable d utilise une variable dans sa détermination et est calculée lors de l’exécution du programme.
    Les méthodes de calculs ne sont pas les mêmes.

    Par ailleurs tu utilises des variables entières mais la fonction pow utilises des doubles. Je ne serai pas surpris s'il y ait des pertes de précisions lors des conversiosn entier <-> double.

    Que donne ton programme si tu n'utilises que des variables de type double ?


    Cordialement.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2014
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Ça fonctionne merci. Je ne savais pas que ce type d'erreurs de précision existait. Merci encore

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

Discussions similaires

  1. Problème fonction Math.pow
    Par suNiz dans le forum Débuter avec Java
    Réponses: 21
    Dernier message: 13/01/2012, 12h47
  2. Problème avec la fonction pow
    Par marguerite99 dans le forum C
    Réponses: 13
    Dernier message: 14/11/2009, 14h25
  3. problème avec la fonction pow()
    Par emprex dans le forum C
    Réponses: 7
    Dernier message: 17/11/2007, 12h04
  4. probléme avec la fonction pow
    Par arglow dans le forum C
    Réponses: 7
    Dernier message: 23/07/2007, 13h38
  5. Problème avec la fonction pow(les puissance)
    Par Clément76 dans le forum C
    Réponses: 10
    Dernier message: 04/10/2006, 12h44

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