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

Requêtes MySQL Discussion :

Stocker la partie décimale d'un float même si elle est nulle


Sujet :

Requêtes MySQL

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Points : 316
    Points
    316
    Par défaut Stocker la partie décimale d'un float même si elle est nulle
    Bonjour à tous,

    Je bosse sur une application dans laquelle la précision est de 2 chiffres après la virgule, j'utilise le type double pour stocker ces valeurs.

    Le problème que je rencontre, c'est que lorsque je stocke la valeur 25.20, elle est transformée en 25.2, hors j'ai besoin lorsque je fais une requete sur ma table, que la valeur soit 25.20.

    Même constat pour 25.00, je voudrais que mysql me retourne 25.00 et pas 25 comme actuellement.

    Savez-vous si il est possible de faire ca avec mysql ? je voudrais ne pas avoir à le faire dans le code de mon appli, car ca m'obligerait à faire ce traitement assez lourd dans plusieurs classes, etc.

    Merci d'avance !

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Points : 382
    Points
    382
    Par défaut
    Je vois pas trop pourquoi tu veux 25.20 au lieu de 25.2, c'est pareil pour tout tes calcul, c'est juste au moment de l'affichage que tu veux voir apparaitre 25.20 je suppose, j'ai pas bien compris ce qui te gène.

    Tu peux toujours transformer ton 25.2 en chaine "25.20", mais tu pourras plus l'utiliser en numérique pour des calcul ou autres.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Points : 316
    Points
    316
    Par défaut
    C'est une demande du cahier des charges, je dois afficher les montants avec des valeurs 25,00 ou 25,20, soit toujours 2 chiffres après la virgule même si les 0 peuvent être supprimés.

    Je voulais faire ca au niveau BDD, pour m'éviter de reprendre tout le code de l'appli car c'est un changement qui est survenu à un stade assez avancé du projet et j'ai pas envie de me retaper toutes mes classes qui manipulent ces montants =(

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Points : 382
    Points
    382
    Par défaut
    Mais c'est au moment de l'affichage que tu doit faire la manip pour mettre au format voulu, pas avant

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Points : 382
    Points
    382
    Par défaut
    Tu doit modifier l'affichage, pas les autres manip (calculs et autre).

    Donne la partie de code qui les affiche et je pourrais t'aider

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Points : 316
    Points
    316
    Par défaut
    C'est sympa, mais je suis tout à fait capable de faire une regex ou une fonction qui va me rajouter les 0 à la fin lors de l'affichage.
    Le truc c'est que je voulais savoir si il était possible de les stocker comme ca dans mysql, je voulais faire le travail une seule fois à la source et pas à chaque affichage.

    Dans l'appli je dois avoir 5 ou 6 tableaux, qui ont chacun environs 15 colonnes de type montant, ca veut dire que je dois me taper cette fonction sur chaque affichage d'un montant, je trouve ca lourd.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Points : 382
    Points
    382
    Par défaut
    Bah ya pas d'autre moyen, tes données sont dans des format numérique, et dans un format numérique 2.2 = 2.20, c'est juste un problème d'affichage

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Points : 382
    Points
    382
    Par défaut
    Maintenant tu peux toujours mettre tes donnée dans un format chaine, mais tu pourras plus faire aucun calcul dessus, sans interet et beaucoup plus lours a mon avis

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Points : 631
    Points
    631
    Par défaut
    Avec un type "DECIMAL(4,2)", le nombre "25" retourne "25.00".

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Points : 382
    Points
    382
    Par défaut
    Mais dès qu'il mettras le résultat de sa requ^éte dans une variable numérique PHP (puisqu'il fait des calculs dessus) ca vaudras toujours 25, c'est juste un problème d'affichage à mon avis

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Points : 631
    Points
    631
    Par défaut
    Non, chez moi, le résultat de la requête est '8.00' et non pas '8'. Maintenant oui, c'est une string donc forcément, la convertir en numérique l'altère.

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Points : 631
    Points
    631
    Par défaut
    Après si c'est juste ce problème :

    Code exemple.php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
     
      $nombre = 12345;
     
      echo number_format($nombre, 2, '.', ''); // affiche 12345.00
     
    ?>

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Points : 382
    Points
    382
    Par défaut
    j'ai pas envie de me retaper toutes mes classes qui manipulent ces montants
    Donc apparemment ya des manip (calculs) sur le montant, d'ou l'interet de le laisser en numérique.

    Puis effectivement de modifier uniquement l'affichage comme indiqué par DaRiaN

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Points : 316
    Points
    316
    Par défaut
    Merci pour votre aide, mais effectivement même si je pouvais stocker les décimales nulles en BDD, c'est php qui me les supprime lors des calculs.

    La seule solution est de faire un number_format sur chaque résultat obtenu.

    Heureusement que les regex sont là pour appliquer number_format sur toutes mes lignes de résultats de chaque classe !

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Points : 382
    Points
    382
    Par défaut
    J'arrive pas à comprendre ton besoin, si tu veux le nombre formaté dans une chaine en sortie de ta requête (calcul ou pas dessus) ou si tu en as besoin qu'a l'affichage.

    Bref c'est pas clair

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Points : 316
    Points
    316
    Par défaut
    C'est très clair, j'ai dit que c'était que pour l'affichage.

    Je voulais stocker mes chiffres une fois pour toutes avec les .00 car une valeur que je stocke 1 fois, il m'arrive de l'utiliser et de l'afficher à 5 ou 6 endroits de l'application.

    Donc je préférais agir à la source (bdd) et pas à l'affichage pour ne pas avoir à modifier tout mon code.

    C'est très simple, mais c'est effectivement pas possible car je fais des calculs sur ces valeurs (après requete sur bdd) et du coup même si elles étaient stockées en .00, elle le perdraient lors des calculs php.

Discussions similaires

  1. retourner la partie décimale d'un float
    Par sheridan08 dans le forum Général Python
    Réponses: 16
    Dernier message: 09/01/2022, 22h00
  2. Extraire la partie décimale d'un float
    Par kryptong dans le forum Débuter
    Réponses: 15
    Dernier message: 19/01/2013, 22h01
  3. [PHP 5.1] tester qu'une variable existe même si elle vaut null
    Par hadesjack dans le forum Langage
    Réponses: 5
    Dernier message: 15/02/2012, 15h23
  4. Partie décimale d'un float
    Par dré kam dans le forum C
    Réponses: 33
    Dernier message: 29/06/2011, 17h01
  5. Extraire la partie décimal d'un float en c
    Par souhe_nits dans le forum Débuter
    Réponses: 5
    Dernier message: 22/03/2011, 17h15

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