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 PHP Discussion :

Résultat de calcul étrange


Sujet :

Langage PHP

  1. #1
    Membre éprouvé Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 067
    Par défaut Résultat de calcul étrange
    Bonjour,

    J'ai un résultat étrange dans mon calcul :

    Voici mes valeurs de donnée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Encaissement réel : 1017.00
    Encaissement théorique : 1017.00
    Remise commerciale : 0.00
    Solde : -2.2737367544323E-13
    Mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    echo "<br>Encaissement réel : ".$requete['encaisse_reel'];
    echo "<br>Encaissement théorique : ".$requete['encaisse_theorique'];
    echo "<br>Remise commerciale : ".reglementEffectueRemiseCommerciale($requete[0]);
    $ecart = reglementEffectueRemiseCommerciale($requete[0]);
    $requete['encaisse_ecart'] = $SoldeCmd->total_net - $requete['encaisse_reel'] - $ecart;
    echo "<br>Solde : ".$requete['encaisse_ecart'];
    Pourquoi mon solde prend-il cette valeur : -2.2737367544323E-13

    J'ai mis floatval() sur chaque valeur mais ça n'a rien changé.
    Merci

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Par défaut
    $requete['encaisse_ecart']

    c'est un champ stocké ds ta base ou un champ calculé depuis la requete

  3. #3
    Membre éclairé Avatar de Linio
    Inscrit en
    Octobre 2005
    Messages
    431
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 431
    Par défaut
    C'est surtout que cette variable : $SoldeCmd->total_net n'est affichée nulle part, elle est censée correspondre à quoi ?

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Par défaut
    Citation Envoyé par Linio Voir le message
    C'est surtout que cette variable : $SoldeCmd->total_net n'est affichée nulle part, elle est censée correspondre à quoi ?
    autant pour moi j'ai un peu trop survolé le code

    :ane:

    et donc oui le soucis doit venir de la

  5. #5
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Il faut analyser les valeurs de tes variables:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var_dump($requete);
    var_dump($SoldeCmd);
    var_dump($ecart);

  6. #6
    Membre éprouvé Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 067
    Par défaut
    Bonjour et merci.

    J'ai donc fait un dump de mes champs servant pour le calcul de l'écart :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    echo "<br>";
    			var_dump($requete['encaisse_reel']);
    			echo "<br>";
    			var_dump($SoldeCmd->total_net);
    			echo "<br>";
    			var_dump($ecart);
    Ce qui me donne les valeurs suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    float(1017)
    float(1017)
    float(0)
    Donc ça me semble correct, mais le résultat du calcul suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete['encaisse_ecart'] = $requete['encaisse_theorique'] - $requete['encaisse_reel'] - $ecart;
    Me donne :
    -2.2737367544323E-13
    Lorsque je fais le simple calcul suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete['encaisse_theorique'] - $requete['encaisse_reel']
    Le résultat est :
    -2.2737367544323E-13
    Donc j'en conclu que c'est entre ces 2 variable qu'il y a problème.

    Mais le dump donne la même valeur :

    float(1017)
    float(1017)
    Citation Envoyé par Linio Voir le message
    C'est surtout que cette variable : $SoldeCmd->total_net n'est affichée nulle part, elle est censée correspondre à quoi ?
    Oui pardon, il manque cette ligne au début de mon exemple dans mon 1er post

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete['encaisse_theorique'] = floatval($SoldeCmd->total_net);
    C'est une classe qui calcul la valeur net d'une commande

  7. #7
    Membre Expert Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Par défaut
    ce résultat est normal puisque PHP travaille avec des valeurs approchées
    pour afficher correctement le solde il faut par exemple utiliser la fonction http://php.net/number_format et là ça affichera bien "0"

  8. #8
    Membre Expert
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Par défaut
    et un vardump sur $requete['encaisse_theorique'] donne quoi ?

  9. #9
    Membre éprouvé Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 067
    Par défaut
    Citation Envoyé par Seb33300 Voir le message
    et un vardump sur $requete['encaisse_theorique'] donne quoi ?
    Voici le résultat :
    float(1017)

  10. #10
    Membre Expert Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Par défaut
    tu as vu ce que j'ai marqué ?
    Citation Envoyé par nosferapti Voir le message
    ce résultat est normal puisque PHP travaille avec des valeurs approchées
    pour afficher correctement le solde il faut par exemple utiliser la fonction http://php.net/number_format et là ça affichera bien "0"

  11. #11
    Membre éprouvé Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 067
    Par défaut
    Citation Envoyé par nosferapti Voir le message
    tu as vu ce que j'ai marqué ?
    Oui et je viens de finir les tests qui sont probant, j'ai donc ajouté une fonction de formatage et je reprends tous mes calculs.

    Merci, je fais encore quelques tests et je pense pouvoir dire ensuite "RESOLU"

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 11/11/2007, 07h03
  2. Résultat du calcul =Mod(-1, 10) ?
    Par MiJack dans le forum Excel
    Réponses: 13
    Dernier message: 21/06/2007, 14h50
  3. Affichage d'un résultat de calcul dans une fenêtre
    Par Marcusss dans le forum Interfaces Graphiques
    Réponses: 17
    Dernier message: 03/04/2007, 12h23
  4. Réponses: 5
    Dernier message: 22/11/2006, 16h06
  5. recupération d'un résultat de calcul
    Par Toff !!!!! dans le forum Access
    Réponses: 3
    Dernier message: 17/09/2005, 16h53

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