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

Doctrine2 PHP Discussion :

DQL/Postgres Opérations mathématiques arrondies automatiquement (floor) [2.x]


Sujet :

Doctrine2 PHP

  1. #1
    Candidat au Club Avatar de champ-pignon
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2016
    Messages : 2
    Points : 2
    Points
    2
    Par défaut DQL/Postgres Opérations mathématiques arrondies automatiquement (floor)
    Hello .

    J'ai un petit soucis lorsque je fais une requête DQL, et je ne sais pas si c'est lié à Doctrine directement ou à Postgres derrière mais peut être saurez vous m'éclairer, parce que je sèche un peu.

    Pour vulgariser mon problème, lorsque je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT (1/2) as test
    ...
    Le résultat de test est 0 et non pas 0.5.

    En gros, mes résultats sont arrondis, et ça fausse une bonne partie des moyennes que je génère en DQL dans mes requêtes.

    Avez vous une idée d'où celà peut venir ? Serais-je passé à côté d'une conf crusciale ?

    Merci d'avance pour vos retours

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Bonjour,
    C'est lié au moteur de base de données (donc tu aurais le même souci avec MySQL/Oracle/SqlServer....), en fait tu essayes de diviser des entier et donc tu as le résultat sans reste.
    Pour avoir le bon résultat, il faut diviser des float.

    Par exemple :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT (1.0/2) as test

    Ou pour être générique tu peux caster ton entier en float

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    -- en PostgreSQL
     
    SELECT ( CAST(1 as float ) / 2 ) as test

  3. #3
    Candidat au Club Avatar de champ-pignon
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2016
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Haaaaaaaa mais ouiiiiiiiiiiii. En ajoutant une notion de flottant dans mes opérateur (n'importe lequel en fait), ça fonctionne.
    J'ai appris quelque chose, et d'assez utile pour le coup !

    Merci !

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

Discussions similaires

  1. Opération mathématique sur une table
    Par webrider dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 23/09/2006, 14h01
  2. [Conception] Détection d'opérations mathématiques dans un textfield
    Par lynal dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/06/2006, 08h20
  3. [time]Opération mathématique sur heure
    Par Shaika-Dzari dans le forum Général Python
    Réponses: 4
    Dernier message: 28/12/2005, 19h08
  4. Opération mathématique entre deux Threads
    Par rvzip64 dans le forum Langage
    Réponses: 11
    Dernier message: 13/06/2005, 11h58

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