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

Outils Firebird Discussion :

IBExpert : troncature des double precision ?


Sujet :

Outils Firebird

  1. #1
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut IBExpert : troncature des double precision ?
    Bonjour,

    J'utilises IBExpert sur des bases IB6 depuis quelques semaines et il me facilite bien la vie.
    Mais, il m'induit en erreur régulièrement avec le nombre de décimales des champs DOUBLE PRECISION qu'il affiche.

    Ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT CDE_CODRESA,
           CDE_NOENREG,
           CDE_MTTTC,
           (SELECT   SUM(REG_MTENCAIS)
            FROM     REGLEMENTS
            WHERE    REG_NORESA = E.CDE_CODRESA
                     AND REG_NOLIGNE = E.CDE_NOENREG
            GROUP BY REG_NORESA,REG_NOLIGNE) PAYE
    FROM   ENTETES_RESA E
    WHERE  (SELECT   SUM(REG_MTENCAIS)
            FROM     REGLEMENTS
            WHERE    REG_NORESA = E.CDE_CODRESA
                     AND REG_NOLIGNE = E.CDE_NOENREG
            GROUP BY REG_NORESA,REG_NOLIGNE) <> CDE_MTTTC
    Cette requête retourne :
    CDE_CODRESA CDE_NOENREG CDE_MTTTC PAYE
    2809 20 124.38 NULL
    2027 20 183.16 183.16
    2027 40 183.16 183.16
    Le problème ici c'est que pour les 2 dernières lignes CDE_MTTTC = PAYE = 183.16 et donc ces lignes ne devraient pas être retournées.

    Ce qui est d'autant plus vrai qu'elles ne sont pas retournées si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT CDE_CODRESA,
           CDE_NOENREG,
           CDE_MTTTC,
           (SELECT   ROUND( SUM(REG_MTENCAIS), 2 )
            FROM     REGLEMENTS
            WHERE    REG_NORESA = E.CDE_CODRESA
                     AND REG_NOLIGNE = E.CDE_NOENREG
            GROUP BY REG_NORESA,REG_NOLIGNE) PAYE
    FROM   ENTETES_RESA E
    WHERE  (SELECT   ROUND( SUM(REG_MTENCAIS), 2 )
            FROM     REGLEMENTS
            WHERE    REG_NORESA = E.CDE_CODRESA
                     AND REG_NOLIGNE = E.CDE_NOENREG
            GROUP BY REG_NORESA,REG_NOLIGNE) <> ROUND(CDE_MTTTC, 2)
    D'où ma question : est-ce un problème de paramétrage d'IBExpert ? Du type de mes champs ? Un bug de IBExpert ?
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  2. #2
    Membre averti

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    379
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 379
    Points : 376
    Points
    376
    Par défaut
    il est probable que le formatage des valeurs soit liés au paramètres régional de la machine. il faut donc commencer par voir de ce côté.

    une autre approche serait de formuler dans la requête elle-même la convertion en chaîne avec "CAST"

    mais attention, tous les systèmes windows effectue un arrondi de banquier à l'arrondi le plus proche en fonction des valeurs pair/impair, donc prudence, à contrôler !

    cela est du au fait que la plus part des languages utilisent le co-processeur arithmétique et que c'est lui qui procède à ces curieux arrondis parfaitement faux en compta!!!

Discussions similaires

  1. cpu trop élevé avec des doubles vecteurs
    Par kuzloka dans le forum C++
    Réponses: 8
    Dernier message: 26/12/2005, 19h29
  2. [TList]: trier des doubles
    Par PpPool dans le forum Langage
    Réponses: 6
    Dernier message: 11/08/2005, 11h34
  3. [C/C++] afficher des doubles dans une message box
    Par lalaurie40 dans le forum MFC
    Réponses: 1
    Dernier message: 24/05/2005, 14h55
  4. Passer de DOUBLE PRECISION en NUMERIC
    Par alex4 dans le forum SQL
    Réponses: 5
    Dernier message: 18/10/2004, 16h24
  5. Extraire des lignes precises d'un fichier
    Par keke33 dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 03/06/2004, 10h52

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