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

SQL Oracle Discussion :

Stocker des nombres avec un 0 après la virgule


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 62
    Points : 69
    Points
    69
    Par défaut Stocker des nombres avec un 0 après la virgule
    Je souhaite stocker des nombres qui possèdent un 0 après la virgule. Puisque du côté applicatif lorsque j'effectue :
    5/2 = 2
    5/2.0 = 2.5
    J'utilise le type NUMBER (avec oracle express edition) mais à chaque fois que je souhaite sauvegarder 2.0 il ne me converse que 2.

  2. #2
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Vous confondez "données" et "présentation".

    un nombre est un nombre. Point.
    après, que vous vouliez 2, 0 ou 889 décimale, c'est de la présentation. la donnée ne change pas.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 62
    Points : 69
    Points
    69
    Par défaut
    Lorsque je récupère le nombre stocker dans la base de données je le stock du côté applicatif dans un double et je vais récupérer 2 par exemple. Du coup lorsque j'effectue mon calcul 5/2 je vais trouver 2 et non 2.5 .
    Mon problème serait donc du côté applicatif?

  4. #4
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    si votre appli retourne 5/2=2, c'est que c'est elle qui a faux me semble-t-il !

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 62
    Points : 69
    Points
    69
    Par défaut
    oui mais quand je fais 5/2.0 j'ai bien 2.5 donc où cela vient du type utilisé dans la base de données ou du type utilisé dans l'application.

  6. #6
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Salut !

    5/2 = 2
    5/2.0 = 2.5
    Tu tapes ça où ?
    Si c'est ton code appli qui fait la division, le mode de stockage ne fait pas de différence...
    Si tu le fais par SQL, ça m'étonne que tu obtiennes ce résultat : j'ai testé rapidement, et Oracle ne semble pas appliquer la division entière, même lorsque les deux opérandes sont de type entier (contrairement à SQL Server...).
    Tu nous disais que tu stockais tes variable en double : dans ce cas, le fait d'affecter à la variable x=2 ou x=2.0 ne change à priori rien du tout !

    Peux tu nous en dire un peu plus sur ta manière d'obtenir ces résultats ?

    (c'est ma photo)
    Paku, Paku !
    Pour les jeunes incultes : non, je ne suis pas un pokémon...

    Le pacblog : http://pacmann.over-blog.com/

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 62
    Points : 69
    Points
    69
    Par défaut
    Oui c'est mon appli qui effectue le calcul.(c# avec framework 2.0)
    Je récupère deux données de type NUMBER sous forme de DOUBLE et je fais une division.

  8. #8
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Et quand tu fais un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    double a = 5;
    double b = 2;
    double c = a/b;
    Il te renvoit c = 2 ???

    (c'est ma photo)
    Paku, Paku !
    Pour les jeunes incultes : non, je ne suis pas un pokémon...

    Le pacblog : http://pacmann.over-blog.com/

  9. #9
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 62
    Points : 69
    Points
    69
    Par défaut
    oui et quand je fais 5/2.0 sa me donne 2.5

    http://msdn.microsoft.com/en-us/library/3b1ff23f.aspx

  10. #10
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Ce n'est pas la même chose !!!!
    Quand tu fais :

    Double a = 2;

    a est considéré comme un double !
    5/2 est très différent de a/b.
    => C'est exactement la problématique du typage, et de la "surcharge" de l'opérateur / en fonction du type des opérandes...

    Refais le test exact :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    double a = 5;
    double b = 2;
    double c = a/b;
    Et rassure-moi, dis moi que ça rend 2,5

    (c'est ma photo)
    Paku, Paku !
    Pour les jeunes incultes : non, je ne suis pas un pokémon...

    Le pacblog : http://pacmann.over-blog.com/

  11. #11
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    C'est donc un problème c# et absolument pas Oracle !

  12. #12
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 62
    Points : 69
    Points
    69
    Par défaut
    Refais le test exact :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    double a = 5;
    double b = 2;
    double c = a/b;
    Et rassure-moi, dis moi que ça rend 2,5
    Ok sa marche mci il y a des jours c'est pas la forme

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

Discussions similaires

  1. nombre avec 8 chiffres apres la virgule
    Par snipes dans le forum C
    Réponses: 9
    Dernier message: 17/11/2008, 14h46
  2. Réponses: 1
    Dernier message: 21/04/2008, 16h00
  3. Représentation d'un nombre avec 'n' chiffres apres la virgule
    Par Contractofoued dans le forum MATLAB
    Réponses: 5
    Dernier message: 29/11/2007, 13h35
  4. [MySQL] le format idéal pour stocker des dates avec l'heure
    Par Philoulheinz dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 17/02/2007, 21h53
  5. sum avec des nombres avec virgule
    Par Bruno2000 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 30/09/2004, 15h01

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