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

MS SQL Server Discussion :

Multiplié 0.065 par 0.001 donne 64.9999


Sujet :

MS SQL Server

  1. #1
    Membre actif
    Inscrit en
    Janvier 2008
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 70
    Par défaut Multiplié 0.065 par 0.001 donne 64.9999
    Bonjour,


    Je ne sais pas encore comment faire pour que SQL Server me calcule correctement cette simple opération..

    Si je fais :

    là ça fonctionne, ça me donne bien 65

    Mais le problème est que je suis dans une procédure stockée et que le 0.065 est stockée dans du texte que je dois caster en real.

    J'ai donc quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DECLARE @val varchar(max);
    SET @val = '0.065';
     
    SELECT CAST(@val AS real) / 0.001;
    Et là voila, j'obtiens 64.999999 au lieu de 65.

    Comment faire ?

    D'avance merci beaucoup pour toute aide

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 99
    Par défaut
    Citation Envoyé par lacombefr Voir le message
    Bonjour,


    Je ne sais pas encore comment faire pour que SQL Server me calcule correctement cette simple opération..

    Si je fais :

    là ça fonctionne, ça me donne bien 65

    Mais le problème est que je suis dans une procédure stockée et que le 0.065 est stockée dans du texte que je dois caster en real.

    J'ai donc quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DECLARE @val varchar(max);
    SET @val = '0.065';
     
    SELECT CAST(@val AS real) / 0.001;
    Et là voila, j'obtiens 64.999999 au lieu de 65.

    Comment faire ?

    D'avance merci beaucoup pour toute aide
    Et si tu multiplies par 1000, ça donne pareil ou pas ?

  3. #3
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonsoir,

    Castez plutôt en NUMERIC ou DECIMAL, qui est un type précis, plutôt qu'en REAL ou FLOAT, qui ne le sont pas

  4. #4
    Membre actif
    Inscrit en
    Janvier 2008
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 70
    Par défaut
    Bonjour,

    Merci elsuket, ça fonctionne bien decimal

  5. #5
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Avec plaisir

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

Discussions similaires

  1. Réponses: 30
    Dernier message: 17/11/2012, 16h42
  2. Réponses: 10
    Dernier message: 19/06/2006, 19h04
  3. Réponses: 2
    Dernier message: 05/06/2006, 08h54
  4. Réponses: 1
    Dernier message: 25/01/2006, 21h44
  5. Multiplier une liste par 2
    Par mdswiuf dans le forum Prolog
    Réponses: 8
    Dernier message: 31/01/2005, 18h27

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