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

Développement SQL Server Discussion :

SqlServer2000 et le Float !


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    272
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 272
    Points : 59
    Points
    59
    Par défaut SqlServer2000 et le Float !
    Salut

    je travaille avec SqlServer2000, et j'utilise Type de donnée Float, mais il me pose de probleme!

    Par exemple j'insère : 0.58

    et si je fait l'appel avec Select, le 0.58 s'affiche ==> 0.579999999999996
    ou bien 0.03 ==> 2.9999999999999E-2

    Franchement sa me perturbe

    Est-ce que le fait d'avoir utilisé le type Float que j'ai ce probleme, Si Oui. y'a t'il pas autre type qui pourra m'aider a évité ça ?!

    Merci d'avance

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    OUI : DECIMAL et NUMERIC.
    Il est normal que le float soit imprécis, car tout réel encodé en base deux ne peut pas représenter exactement un nombre décimal.
    Exemple 0,2 est une somme infinie de puissance inverses de 2... Or l'infini sur un PC, c'est 32 (bits) !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  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 : 42
    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
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Regardez ce sujet

    @++

  4. #4
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    272
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 272
    Points : 59
    Points
    59
    Par défaut
    Merci pour vos réponse

    J'ai éssai de faire ce que vous m'avez proposé comme solution, c a dire j'ai changé la type de ma colonne en DECIMAL et même en Numerique, mais sa ma pas trop aidé :
    Si j'insère 0.25 il devient 0
    ces deux type m'ont éliminé les chiffre après la virgule, et sa ne réponds pas a ce que je cherche

    Merci

  5. #5
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    qu'avez vous mis comme décimal?
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  6. #6
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    272
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 272
    Points : 59
    Points
    59
    Par défaut
    qu'avez vous mis comme décimal?
    Decimal, pourquoi y a plusieurs type de Decimal?!
    Moi sur mon SqlServer je retrouve un seul Decimal !

    Merci

  7. #7
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    On rajoute deux paramètres au type DECIMAL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select cast(0.25 as decimal(5,2))

  8. #8
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    272
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 272
    Points : 59
    Points
    59
    Par défaut
    Merci Waldar

    Ben pour le moment j'utilise la fonction que vous venez de l'indiqué, Mais j'ai aurais aimé réglé ce probleme au niveau de mes table, je pensais qu'il existe un certain type de données sur SqlServer qui règle ce probleme, Mais je vois qu'apparemment sa n'existe pas !!!

    Un type de données : quand on fait un entré un "0.25" il reste un "0.25"

    Merci

  9. #9
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Je viens de vous le donner. DECIMAL(5,2).
    Vous avez aussi le droit de chercher dans la documentation.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par info3licen Voir le message
    Ben pour le moment j'utilise la fonction que vous venez de l'indiqué, Mais j'ai aurais aimé réglé ce probleme au niveau de mes table, je pensais qu'il existe un certain type de données sur SqlServer qui règle ce probleme, Mais je vois qu'apparemment sa n'existe pas !!!
    Ce que Waldar vous a indiqué est un type non une fonction.
    Ça serait bien si vous faisiez un minimum d'effort pour comprendre ce que vous faites.

  11. #11
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    272
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 272
    Points : 59
    Points
    59
    Par défaut
    Merci pour toutes vos réponse

    j'ai gardé mes colonnes Float et j'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT cast(0.25 AS decimal(5,2))
    Pour l'affichage .

    Merci bien

  12. #12
    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 : 42
    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
    Points : 12 371
    Points
    12 371
    Par défaut
    Ben non ... il vaut mieux changer vos colonnes au types decimal(5,2) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ALTER TABLE dbo.maTable
    ALTER COLUMN maColonneFloat decimal(5,2) [NOT NULL]
    Le [NOT NULL] est éventuel, c'est à vous de savoir s'il y est ou non.
    Je ne sais pas si la conversion vous posera des problèmes d'arrondis.

    Dès lors toute requête s'écrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT maColonne
    FROM dbo.maTable
    Sans transtypage !

    @++

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

Discussions similaires

  1. Pb de formatage de champs de type float
    Par FrankyNormand dans le forum XMLRAD
    Réponses: 9
    Dernier message: 05/05/2005, 12h37
  2. [IB701] problème de float ??
    Par BoeufBrocoli dans le forum InterBase
    Réponses: 5
    Dernier message: 15/09/2003, 14h15
  3. problème de float sur SQL server 2000.
    Par fidji dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 24/07/2003, 14h15
  4. [7RC3] Formatage de champs float
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 2
    Dernier message: 19/05/2003, 09h38
  5. probleme d'insertion d'un Float
    Par neness dans le forum Débuter
    Réponses: 3
    Dernier message: 07/01/2003, 12h32

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